Actionscript3.0の最適化

ActionScript3 最適化・高速化Tips 簡易まとめ

という大変興味深い記事を発見しました。
すぐに理解して実行できそうな部分だけピックアップしとこ。

フレーム毎にビットマップ処理が必要な場合、前もってビットマップデータを作成しておき、
fillRect()/copyPixels()を使う

BitmapData.draw()をBitmapData.fillRect()に変えると約790%の高速化
fillRect()だけでは十分でないのでcopyPixels()をメインに使うことになるが 約420%の高速化

forループで配列内走査をする場合は前もって配列の長さを所得しておき、
イテレータ変数をint/uint型にする 約147%の高速化

Object型を直接使わずはクラス定義してつかえ

Point型やRectangle型などよく使うオブジェクトの定数をつくって使いまわす

(.graphicsや.transformなどの)グローバルgetterプロパティを2回以上呼ぶ場合は、ローカル変数に代入して使う

.stageプロパティはパッケージ変数に入れておくと118%の高速化

2の累乗を掛ける場合は左シフトを使う 300%の高速化。

2の累乗を割る場合は右シフトを使う 350%の高速

Math.abs()を使わず絶対値を求める 2,500%高速化

//version 1
i = x < 0 ? -x : x;

//version 2
i = (x ^ (x >> 31)) - (x >> 31);


他のクラスの定数は一旦ローカルの変数に値を代入してからループでつかう 約115%の高速化

TextField.textに文字列を追加するときは「+=」でつなげるのではなくappendText()をつかう

フィルタのblurX,blurYプロパティの値は2の累乗にする

非常にためになりました。
最近flashあんまり触ってないのでチャレンジしてみたいなあ。

参照サイト
ConquestArrow.addEventListener();

Tags:

Leave a Reply