Performance Flash actionscript 3游戏性能-删除对象并重置属性

Performance Flash actionscript 3游戏性能-删除对象并重置属性,performance,actionscript-3,flash,object,cpu,Performance,Actionscript 3,Flash,Object,Cpu,我正在开发一个flash游戏,它要求我在运行时将类中的对象实例化到场景中,并通过代码删除这些对象。 这很好,我可以在游戏中动态添加和删除实例,但是大约两分钟后,它开始严重滞后,最终会一起崩溃 我使用numchildren()跟踪场景中有多少个对象,似乎有些实例没有被正确删除,因为跟踪的对象数将增加,最终达到近2000个对象 我正在使用removeChild()删除这些对象,并试图找出这些对象仍在场景中的原因。 我在某个地方读到,如果对象没有正确重置,它们可能仍然使用cpu 我对使用flash还是

我正在开发一个flash游戏,它要求我在运行时将类中的对象实例化到场景中,并通过代码删除这些对象。 这很好,我可以在游戏中动态添加和删除实例,但是大约两分钟后,它开始严重滞后,最终会一起崩溃

我使用
numchildren()
跟踪场景中有多少个对象,似乎有些实例没有被正确删除,因为跟踪的对象数将增加,最终达到近2000个对象

我正在使用
removeChild()
删除这些对象,并试图找出这些对象仍在场景中的原因。 我在某个地方读到,如果对象没有正确重置,它们可能仍然使用cpu

我对使用flash还是个新手,我的主要问题是——如何找出哪些对象没有被删除,如何将它们完全从游戏中删除?
除了简单的
removeChild()
part之外,我还需要向代码中添加什么
非常感谢您的帮助。

请提供使用removeChild()方法的代码部分

一般情况下,您应该这样使用removeChild():

import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;

var movieClip:MovieClip;
var timer:Timer=new Timer(5000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);

makeMovieClips();

function makeMovieClips() {
    for (var i:int; i<2000; i++) {
        movieClip=new MovieClip();
        movieClip.graphics.beginFill(Math.random()*0xFFFFFF);
        movieClip.graphics.drawCircle(Math.random()*stage.stageWidth, Math.random()*stage.stageHeight, Math.random()*40);
        movieClip.graphics.endFill();
        addChild(movieClip);
    }
    trace (numChildren) // should output 2000;
    timer.start();
}

function onTimerComplete(e:TimerEvent):void {
    while (numChildren>0) {
        movieClip=getChildAt(0) as MovieClip;
        removeChild(movieClip);
        // or we can use removeChildAt(0); instead of 2 lines above
    }
    trace (numChildren) // should output 0, because all objects are removed from display list;
}

感谢您的回复,我现在已经通过使用此.contains()进行调试找到了所有未删除对象的原因,以查看某些对象是否仍在场景中,结果发现我只是忘记了在代码的另一部分添加removeChild()语句。然而,你的答案的第二部分是非常有用的-删除参考。。在我的代码中,我一直保留着我实例化的所有对象的数组,这就是我引用它们的方式。以movieClip=null为例;删除实例后,我已将数组引用设置为null。
movieClip=null;