Flash CS3、CS4にて、
ライブラリに読み込んだ画像(JPEG,PNGなど)を
MovieClip or Sprite に内包し、あっちゃこっちゃで
使うってことをよくするが、
その場合、内包する画像は
リンケージ設定で、Class設定をしておいたほうがメモリーが軽くなるようだ。
あくまでもSystem.totalMemoryでの値を見て。
実験
どうやら、リンケージClass設定をしてない画像を
MovieClipやSpriteに内包すると
Shape扱いになるようだ。
実際に、内包した画像を getChildAt(0) にて trace 、してみると
リンケージClass設定をしてない内包画像
[object Shape]
リンケージClass設定した内包画像
[object Bitmap]
こように、ライブラリの画像をリンケージClass設定しておくと自動的に、
これを子に持つ親MovieClip、Spriteで
this.addChild(new Bitmap(new BitmapData(0,0)));
されるかたちとなるようだ
そして、
メモリー使用的にも
Shape >> BitmapData
のようで、メモリー使用量が大幅に軽減した。
画像の点数とサイズが大きい僕の案件での場合だったが数MB軽減した。
画像をリンケージ設定した場合、プロパティで設定したスムージング設定が
反映されなくなる( false扱いになる)っぽい?ので
注意が必要だ。
別途スクリプトで Bitmap.smoothing にアクセスして設定が必要となる。
というように、僕のケースでは、
リンケージ設定することで
メモリー使用量が減り、プロジェクトの処理速度の向上ができた。
しかし、問題のある。
その画像を内包する親のMovieClipなりSpriteをnewするときの
処理的な重さが、リンケージしない場合のほうが軽いようだ。
new時の処理の重さ: リンケージしない << リンケージする
つまり、Shape << Bitmapdata というようだ。
なので、画像の数や大きさ、実行タイミングなどを考えて
どちらか選ぶほうがよさそうだ。
4月 8, 2009 at 12:11 PM




私をフォローしてください. @quqjp





