theFlashBlogの記事
Optimizing Drag and Drop for Mobile Applications
モバイルAIRを作成する時の最適化について書かれています。
記事自体はすでに知っていることでした。
GPUアクセレーションを使えとか、ドラッグさせる時にはMOUSE_MOVEではなくENTER_FRAMEを使ってマウス位置にインスタンス座標を設定しろとか。。。
Use GPU Acceleration, のサンプルコード cacheAsBitmapMatrix = new Matrix()
が不勉強で分からなかったので調べてみた。
Adobe® Flex® 4.1 リファレンスガイド
DisplayObject.cacheAsBitmapMatrix
言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 2.0
AIR専用なのか。
null 以外の場合、この Matrix オブジェクトは
cacheAsBitmap
をtrue
に設定したときの表示オブジェクトのレンダリング方法を定義します。アプリケーションでは、このマトリックスを、ビットマップバージョンの表示オブジェクトをレンダリングするときに適用された変換マトリックスとして使用します。AIR プロファイルのサポート:この機能はモバイルデバイスでサポートされますが、デスクトップオペレーティングシステムではサポートされません。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
cacheAsBitmapMatrix
セットを使用して、アプリケーションは移動、回転、拡大や縮小などの様々な 2D 変形にわたって、キャッシュされたビットマップイメージを保持します。アプリケーションでハードウェアアクセラレーションが使用されている場合、オブジェクトはテクスチャとしてビデオメモリに格納されます。これにより、GPU が、サポートされている変形をオブジェクトに適用できます。GPU では、これらの変換を CPU よりも高速に実行できます。ハードウェアアクセラレーションを使用するには、Flash Professional CS5 の iPhone 設定ダイアログボックスの「一般」タブで「レンダリング」を「GPU」に設定します。または、アプリケーション記述ファイルで
renderMode
プロパティをgpu
に設定します。例えば、次のコードは表示オブジェクトの未変換のビットマップ表現を GPU に送信します。
matrix:Matrix = new Matrix(); // creates an identity matrix mySprite.cacheAsBitmapMatrix = matrix; mySprite.cacheAsBitmap = true;
注意があった。
注意:cacheAsBitmapMatrix プロパティは、2D 変形に適しています。3D 変形を適用する必要がある場合は、オブジェクトの 3D プロパティを設定し、その transform.matrix3D プロパティを操作します。アプリケーションが GPU モードを使用してパッケージされている場合、この操作を行うと、GPU によって 3D 変形をオブジェクトに適用できます。cacheAsBitmapMatrix は、3D オブジェクトでは無視されます。
なるほど2D専用ってわけなのね。