Home > Archives > 2008-12
2008-12
CastMovieClipを多用しすぎるのも危険?
- 2008-12-18 (木)
- 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を継承するほうがよさそう。
ってゆうのであってるのかな??
- Comments: 0
- Trackbacks: 1
Home > Archives > 2008-12
- Search
- Feeds
- Meta