addCommand内で動的に値を渡す方法

Progressionで、かなり引っかかってしまったのが、addCommand()内で、各Commandを入れていくときに、各Command間での値の受け渡し、変化する変数を元にCommandへのパラメータを変えるときの書き方。これは、SceneObjectで、addCommandが実行された時点での変数の値がそのまま使われるのが原因。ただし、Funcもしくは匿名関数内は、実行時の値が用いられるので、その前の処理で変数が変わった場合でも、新しい値を用いることができる。

解決策として、Func/匿名関数内で、Commandのインスタンスを生成し、実行する。

var seri:SerialList;
addCommand(
new LoopList( 10, null, // 10回ループ設定する
new Func( function():void
{
obj = icons[ this.parent.count ]; // LoopList( this.parent )のカウンタからspriteの参照配列よりspriteを取得、Loopされる度に、別なspriteが与えられる
seri = new SerialList(); // 動的にSerialListのインスタンスを生成
seri.addCommand( new DoTweener( obj, {scaleX:1.0, scaleY:1.0, time:1.0 } ) ); //Tweenerを設定
seri.addCommand( new DoTweener( obj, {scaleX:0.5, scaleY:0.5, time:1.0 } ) );
seri.execute(); //実行
this.listen( seri, ExecuteEvent.EXECUTE_COMPLETE ); // seriの処理が終わるまで待つ
},
new Trace( “###” ) // Traceを実行
)
);

おまけで、新しいlistenの書き方も、メモ。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA