我在 AS3 中有一个游戏,其中包含一个文档类和一个自定义类,该类附加到我的 .fla 中的影片剪辑。该对象的实例每秒生成多次。我想在有 100 个实例时删除这些实例。(由于一段时间后的性能问题)实例在创建后存储在一个数组中。
问问题
2110 次
3 回答
0
当对象超过 100 个时,这将删除所有对象。
if(array.length > 100)
{
for(var i:int = array.length - 1; i > -1; i--)
{
stage.removeChild(array[i]);// or any other parent containing instances
array.pop();
//array[i] = null; // if you want to make them null instead of deleting from array
}
}
提示:负循环 (i--) 的性能比正循环 (i++) 更快。
提示:pop() 的性能比 unshift() 快。
更新:
仅当对象超过 100 个时才会移除对象,从而导致舞台上仅剩下 100 个最后的对象。
if(array.length > 100)
{
for(var i:int = array.length - 1; i > -1; i--)
{
if(array.length > 100)
{
stage.removeChild(array[i]);// or any other parent containing instances
array.unshift();// if you want to delete oldest objects, you must use unshift(), instead of pop(), which deletes newer objects
//array[i] = null; // if you want to make them null instead of deleting from array
}
}
于 2012-05-28T20:18:15.533 回答
0
您可以使用删除它们,this.removeChild(obj);
并且 obj 是您从数组中的对象。所以你需要的是遍历数组并删除它们。
于 2012-05-28T19:59:11.753 回答
0
/****** MyClass.as *********/
public class MyClass extends Sprite{
private var myVar:int=8567;
private function myClass():void{
//blablabla
}
public class destroy():void{
myVar = null;
this.removeFromParent(true); //method of Starling framework
}
}
/******** Main.as ****************/
public var myInstance:MyClass = new Myclass();
//Oh!! i need remove this instance D:
myInstance.destroy();
于 2014-12-29T15:27:00.110 回答