待望のProgression本「ProgressionによるFlashコンテンツ開発ガイドブック」が届いた。クラススタイルを中心に、一気に読んだのだが、これまでいろんなBlogに分散していた情報が集約されていて効率良く学習できるし、すでに使いこなしている人でも今まで知らなかった機能や細かい機能を知ることができていいと思う。Progressionを学ぶための定石の本としてお勧め。
「Flash / ActionScript3.0」カテゴリーアーカイブ
コード向きのフォントMenlo
feb19.jp blog – Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
で見かけたので、Eclipse / Flash BuilderのフォントをMenloにしてみた。
確かに、いい感じ。
インスタンスの型を判定
変数、インスタンスの型を判定するには、演算子を”is”を使う。
var item:String; if( item is String ) { trace( "String" ); }
Eclipse/Flex Builder/Flash Builder/へ最初に入れるべきplug-in
- subversive
- subversionのクライアント
- SFTP Plug-in for Eclipse
- SFTPのクライアント。デプロイ時に便利。
- Builder 2 Task Plugin 1.0.0
- .as, .mxmlで//TODOを使えるようにする
- Flash Snippets panel for Flash Builder 4
- FlashDeveloperみたいに、スニペットを使えるようにする。定型文入力に便利。
CastButtonからDoTweenerだとエラー
Progression3で、CastButtonの_onCastMouseUp内で、新たにaddChildするCastSpriteに対して、DoTweenerを実行すると、中身がnullだよとエラーが発生する。CastSpriteの_onCastAddedでDoTweenerを実行しても同様のエラー。なぜか、Propは使える。
対応策は不明。
Papervision3Dのメモリーリーク
Papervision3Dが原因と思われるメモリーリークに悩まされている。ここに、いろいろとメモがまとまっている。原因は、BitmapMaterialあたりかなと。
SIHOのActionScript勉強メモ メモリーリーク回避についての参考リンク

配列の複製
as3での配列の複製は、sliceで。
var copyArr:Array = arr.slice();
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の書き方も、メモ。
AIRアプリのステータスバーを消す方法
WindowedApplicationのshowStatusBarプロパティで指定する
オブジェクト(インスタンス)のクラス名を取得する方法
getQualifiedClassNameを用いると、完全修飾クラス名(パッケージ名を含んだクラス名)を取得できる
var myClassName:String = getQualifiedClassName( this );
ただし、完全修飾クラス名には、”::”などが入ってくるので、これを”.”に置換
var myClassName:String = getQualifiedClassName( this ).replace(“::”, “.”);