Adobe Flash非公式テクニカルノート Starlingフレームワークを最適化するためのActionScriptの設定
Starling Wiki「Performance Optimization」にコンテンツを最適化するコツが紹介されています。本稿はその中から、ActionScript 3.0の設定についての項目を解説します。 01 DisplayObject.blendModeプロパティをBlendMode.NONEに設定するテクスチャが完全に不透明の矩形であれば、ブレンドをなしにするとGPUの負荷が減らせます。とくに大きな背景のイメージには有効です。表示オブジェクトの状態を変えることにはなるものの、それを上回る効果が期待できます。その場合には、DisplayObject.blendModeプロパティに定数BlendMode.NONEを設定します。 DisplayObjectオブジェクト.blendMode = BlendMode.NONE 02 Stage.colorプロパティの設定背景が単色のときは、テクスチャやQuadインスタンスを置くのではなく、Stage.colorプロパティで色設定をしましょう。Starlingフレームワークは、フレームごとにステージを描替えます。つまり、Stage.colorプロパティを変えたからといって、新たな負荷が生じることはないのです。 03 DisplayObject.widthやDisplayObject.heightプロパティを繰返し参照することは避けるDisplayObject.widthやDisplayObject.heightプロパティの参照は、思いのほか演算の負荷が高いです。インスタンスの変換行列(回転/伸縮/移動)を調べて計算するからです。とくにSpriteに代表されるDisplayObjectContainerインスタンスでは、すべての子インスタンスについて変換行列の計算が繰返されることになります[*1]。 forループなどの繰返し処理で同じプロパティを何度も参照するのは一般に避けるべきです(「ActionScriptでの最速を求める」01-03「forループで配列・Vectorを扱うときのお約束」参照)。とくに、DisplayObject.widthやDisplayObject.heightプロパティについては、上述の理由によりその違いは大きいといえます。
04 インスタンスのDisplayObject.touchableプロパティをfalseにするマウスやタッチパネルの操作をすると、Starlingフレームワークはその対象となるインスタンスを調べます。この処理は負荷が上がります。すべてのDisplayObjectインスタンスに対して、DisplayObject.hitTest()メソッドを呼出すことになるからです。 そこで、マウス操作の対象とならないインスタンスは、予めDisplayObject.touchableプロパティをfalseにしておきます。すると、Starlingフレームワークは、マウス操作を調べる対象からそのインスタンスを外します。できれば、個々の子インスタンスより、親インスタンスのプロパティを設定する方が効果は高いです。
05 Starling 1.2にEventDispatcher.dispatchEventWith()メソッドが加わったStarling 1.2からEventDispatcher.dispatchEventWith()メソッドが加わります。このメソッドは、引数のイベントオブジェクトを新たにつくらずに使い回します。タイプが楽になるだけでなく、ガベージコレクションの手間が減ります。詳しくは「StarlingフレームワークにEventDispatcher.dispatchEventWith()メソッドが加わる」をお読みください。 作成者: 野中文雄 Copyright © 2001-2012 Fumio Nonaka. All rights reserved. |
||||||||||