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しましょう。