私はFlashを使用してiPhone用のゲームを開発しています。メモリが重要なので、不要なdisplayObjectをクリーンアップします。削除する必要があるすべてのオブジェクトは、スプライス()を使用して配列から別の配列に取り込まれたMovieClipsです。ここにコードがあります。DisplayListから配列オブジェクトを削除する
public function onTick(e:TimerEvent):void
{ randomNr = Math.random();
if (randomNr > 0.9)
{VARのnewFriend:友人=新しいフレンド(randomX、-15)。 newFriend.cacheAsBitmap = true; army.push(newFriend); addChild(newFriend); }の
(VAR I:INT = 0; I < army.length; iは++){ 軍[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 = deleted.length。 for(var i:int = 0; i < totalDel; i ++) { removeChild(deleted [i]); } トレース(totalDel + "削除済みから削除"); }
私の問題は、クリーンアップ機能を使用しようとするとエラーが発生することです。 配列内のすべてのオブジェクトをトレースすることができますが、[オブジェクトフレンド]として表示されますが、displayListから削除しようとするとエラーが表示されます:エラー#1034:型強制が失敗しました:[2c11309をflash.display .DisplayObject。
私は間違った方法を使用している可能性があります!いくつかのガイダンスを必要とする
これは明らかにオブジェクトの値をnullにするため、削除しようとすると新しいエラーが発生します。 – VoodooBurger
うーん... "toDelete"をnullにしていますか?あなたはいつcleanUp関数を呼び出していますか? – redconservatory
上記のwhileループの問題を解決しました:) thxが手助けをしてくれました – VoodooBurger