Flash / ActionScript3.0」カテゴリーアーカイブ

Progression本は良い

ProgressionによるFlashコンテンツ開発ガイドブック待望のProgression本「ProgressionによるFlashコンテンツ開発ガイドブック」が届いた。クラススタイルを中心に、一気に読んだのだが、これまでいろんなBlogに分散していた情報が集約されていて効率良く学習できるし、すでに使いこなしている人でも今まで知らなかった機能や細かい機能を知ることができていいと思う。Progressionを学ぶための定石の本としてお勧め。

Eclipse/Flex Builder/Flash Builder/へ最初に入れるべきplug-in

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の書き方も、メモ。

オブジェクト(インスタンス)のクラス名を取得する方法

getQualifiedClassNameを用いると、完全修飾クラス名(パッケージ名を含んだクラス名)を取得できる

var myClassName:String = getQualifiedClassName( this );

ただし、完全修飾クラス名には、”::”などが入ってくるので、これを”.”に置換

var myClassName:String = getQualifiedClassName( this ).replace(“::”, “.”);