« ロジクール 「MX Revolution」ふたたび | メイン | Web Devilが頼もしい件について。 »

spliceで軽量化

200コぐらいのインスタンスをfor文で attachMovie してぐりぐりしてたら、そのうち動作が重くなる。これは予想していたので、ステージをはみ出たオブジェクトを removeMovieClip 。これでなんとかしのいできた。
attachMovieしたインスタンスのプロパティは配列に入れてそれぞれあれこれしてたから、この配列リテラルも消しちゃったほうがいいはず。

var obs:Array = new Array();
for (var i:Number = 0; i < count; i++) {
var obj = attachMovie("obj" , "obj"+i , i);
obj._x = Math.random() * Stage.width;
obj._y = Math.random() * Stage.height;
obj.hoo = hoo;
obj.bar = bar;
.....
obs.push(obj);
}

obj.removeMovieClip();
obs.splice(i,1);

こんな感じでいらなくなったものはspliceしていく。配列からspliceすることで動作に影響があるのどうか実験してみたけど、動作が重くなる主原因はどう考えても描画系にありそうなのはまいちがいない。
でもメモリやCPUの負担は減るはずだし、多次元配列なんか使っていたらもっとクライアントマシンにやさしくなるんじゃないかな。

という訳で要らなくなった配列インデックスは面倒がらずにspliceしましょう。

トラックバック

このエントリーのトラックバックURL:
http://www.nishiz.com/mt/mt-tb.cgi/212

コメントを投稿