- 2008-12-18 (木) 16:46
- Flash | Progression
こんな生意気なことを言えばtaka:nium様に怒られるかもしれないが、ちょっと先日困ったことが発生したのでアップ。
非常に便利なのでなにかとシンボルを作るときもCastMovieClipを継承したMovieClipを作成しているわけなんですが、先日DataGridのCellRendererのスキンをいじくりたいことがあって、それらもCastMovieClip継承のクラスを作って入れ込んでみた。
そしたら、どうにもこうにも動きがもっさりしている・・・
僕のソースがきっと悪いんだと思って、あれやこれやをコメントアウトしてみるがどうにも改善しない。
それで単純にリンケージの基本クラスだけを変更してみたものでテスト。
- 基本クラス:flash.display.MovieClip
- 基本クラス:jp.progression.casts.CastMovieClip
- 基本クラス:jp.nium.display.ExMovieClip
この3種類を作ってテスト。
Google Chromeのタスクマネージャで確認してみる
そうすると、CastMovieClip・ExMovieClipを継承したほうでは、DataGrid内でマウスを動かしたりスクロールさせたりすると、メモリが増える増える!

普通にMovieClip継承でも増えるんやけど、増え方が尋常じゃない・・・
カラム数が増えると当たり前だけど増え幅も増大する。。
そして一度上がったものは減ってくれない・・・・
もうちょい単純なソースで検証してみる。
ただただENTER_FRAMEで追加削除を繰り返すのみのクラスを作って検証。
生成するものをCastMovieClipかMovieClipかを切り替えて書き出してみる。
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import jp.progression.casts.CastDocument;
import jp.progression.casts.CastMovieClip;
import jp.progression.Progression;
public class AddCastIndex extends CastDocument
{
public var prog:Progression;
public function AddCastIndex()
{
}
protected override function _onInit():void
{
prog = new Progression( "index", stage );
prog.root.onInit = function():void
{
var cast:CastMovieClip;
var ny:Number = 0;
var container:Sprite = new Sprite();
var enterFrame:Function = function( e:Event ):void
{
if ( cast ) { container.removeChild( cast ); }
cast = new CastMovieClip();
cast.graphics.beginFill( 0 );
cast.graphics.drawRect( 0, 0, stageWidth, 20 );
ny = ( ny + 20 ) % stageHeight;
cast.y = ny;
container.addChild( cast );
}
prog.container.addChild( container );
container.addEventListener( Event.ENTER_FRAME, enterFrame );
}
prog.goto( prog.firstSceneId );
}
}
}<
ENTER_FRAME時に一個しか生成しないので、微妙な差だけど、やっぱりCastMovieClipのほうが増加率は高い。
中をまさぐって検証するには敷居が高すぎるのでやめておこう・・・
でもCastMovieClipを使わないなんてもうできない体になっちゃって、そんな世界僕の中にはもうないけど、こういう使い捨てで済むMovieClipやSpriteはCast(Ex)系を継承せずに単純にMovieClipやSpriteを継承するほうがよさそう。
ってゆうのであってるのかな??
net.hires.debug.Stats を導入してSWF内メモリ表示に変更
- Newer: 基本クラスの変更で警告
- Older: ProcessEvent イベントフローについて(2)
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://blog.cuegraphix.com/wp-trackback.php?p=43
- Listed below are links to weblogs that reference
- CastMovieClipを多用しすぎるのも危険? from blog.cuegraphix.com
- pingback from blog.progression.jp» ブログアーカイブ » [お知らせ] 今週の Progression 関連エントリー(2008/12/13 ~ 2008/12/19) 08-12-20 (土) 11:37
-
[...] blog.cuegraphix.com / CastMovieClipを多用しすぎるのも危険? [...]