Actionscript3.0の最適化
Posted by admin | Filed under Actionscript, 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: Actionscript3.0