Progression 4 Bata のことはじめ

  • 2009 年 10月 12 日
  • kosuke

Progression4のBata版が公開されて少し起ちますが、先日、試しにとあるProgression3プロジェクトをProgression4に書き換えてみました。
といっても、純粋にProgression3の構文をProgression4で動くように書き換えただけですので、まだProgression4の新機能はほとんど試せていません。
Progression3で出来ていたことを、Progression4にそのまま移行すること自体は問題なく出来る感じです。
以下、細かい感じですが、今のところ迄で気づいたことを記録しておきます。

■ブラウザウインドウ最小サイズの管理がSWFForceSizeからSWFSizeに変わったみたい。

SWFSizeはSWFForceSizeの機能をASに埋め込んでFlashからHTMLの最小サイズ、最大サイズを設定できるライブラリ。
Progression4 Bataでは、このライブラリが採用されている模様。

Progression3では、HTMLへの記述で最小サイズを指定していました。

progression.embedSWF( {
    width:800,
    height:600,
    adjustHorizontal:true,
    adjustVertical:true,
    centering:true,
    flashvars:{
    },
    params:{
        bgcolor:"#000000",
        wmode:"window",
        allowscriptaccess:"samedomain"
    },
    attributes:{
    }
} );

このwidthとheightで最小サイズが設定されていたのですが、Progression4 BataだとWebConfig()を生成した段階なんかで設定されるようだ。
WebConfigの第二引数でSWFSizeを有効化するかどうかとなっている。

で、このまま何もしないとflaファイルのステージサイズが最小サイズになる模様。
またPreloaderを使っている場合、Preloaderの段階では最小サイズの制限が設定されない。
なので、全画面Flash、最小サイズ固定で作る場合、Preloaderの段階で明示的にSWFSize.initializeを実行しておいたほうが良さそう。

■Listenコマンドが無くなったみたい
ListenコマンドはProgression3にあったイベント待ちのコマンド。
あまり使うこともないと思いますが、Listenと同様のことをするならFuncコマンドを使う感じですかね。

protected override function atSceneLoad():void {
	var dispatcher:SceneObject = this;
	addCommand(
		new Trace( "1st" ),
		new Func( function():void{
			Tweener.addCaller( this, { count:1, delay:2,
				onComplete:function():void{ 
					dispatcher.dispatchEvent( new Event( Event.COMPLETE ) )
				}
			});
		}),
		new Func( new Function(), null, dispatcher, Event.COMPLETE ),	//Listenコマンド代用
		new Trace( "2nd" ),
		new Func( function():void{
			Tweener.addCaller( this, { count:1, delay:2,
				onComplete:function():void{ 
					dispatcher.dispatchEvent( new Event( Event.COMPLETE ) )
				}
			});
		}),
		function():void{ this.listen( dispatcher,Event.COMPLETE ) },	//匿名関数でListenコマンド代用
		new Trace( "finish" )
	);
}

上記の場合はそもそもListenでやらず、Tweener.addCallerの書かれたFuncでイベント待ち設定すれば良い訳だけれど。

■コマンドの処理状態プロパティがrunningからstateに変わったみたい。
Progression3では、コマンド処理中であるかをどうかを、runningで判定していましたが、これがstateプロパティに変わった模様。Progression3での中断処理のプロパティinterruptingと一緒にstateに統合された感じかなと。

■Progressionのオブジェクトを継承したSWFを読み込んでもガベージコレクションされるみたい。
問題になっていたメモリリークも大分解消されているっぽい。
以前メモリリークで試したサンプルをProgression4に書き換えてみたのがこちら。

サンプル:Progression4 Bataのメモリ使用状況確認

最初の読み込み分が消えいないような気がしますが、ひたすら増えてくってことは無くなった模様。
読み込まれるSWFの方にシーンを持たせるって、目玉の機能はまだ試せていないので、その時のメモリの挙動も次試してみようと思ってます。

ベータ版の状況なんで、今後どう変わってくるかわからないですが正式版のリリース心待ちにしてます。

“Progression 4 Bata のことはじめ” に コメントはありません

コメントをどうぞ