私はフラッシュを使用してiPhone用のゲームに取り組んでいます。メモリが重要なので、不要なdisplayObjectsをクリーンアップしたいと思います。削除する必要のあるオブジェクトはすべて、splice()を使用して配列から別の配列に取得されたMovieClipsです。これがコードです。
public function onTick(e:TimerEvent):void
{randomNr = Math.random();
if ( randomNr > 0.9 )
{var newFriend:Friend = new Friend(randomX、-15); newFriend.cacheAsBitmap = true; army.push(newFriend); addChild(newFriend); }
for(var i:int = 0; i <army.length; i ++){army [i] .y + = 3;
if (avatar.hitTestObject(army[i]))
{
mood = false;
TweenLite.to(army[i], .3, {x:308, y:458, scaleX:.7, scaleY:.7, ease:Expo.easeOut, onComplete:fadeFace, onCompleteParams:[army[i],mood]});
deleted.push(army.splice(i,1));
}
}}
private function cleanUp(e:MouseEvent):void
{var totalDel:int = delete.length; for(var i:int = 0; i <totalDel; i ++){removeChild(deleted [i]); } trace(totalDel + "削除から削除"); }
私の問題は、CleanUp関数を使おうとするとエラーが発生することです。配列内のすべてのオブジェクトをトレースでき、[object Friend]と表示されますが、displayListから削除しようとすると、次のエラーが発生します:エラー#1034:タイプ強制に失敗しました:[]@2c11309をflash.displayに変換できません。 DisplayObject。
私が使用している間違った方法かもしれません!?いくつかのガイダンスが必要です:)