我正在开发Flash游戏,在运行游戏一段时间之后,帧速率会大幅下降。屏幕上同时没有很多MovieClip,但是正常使用removeChild和addChild替换MovieClip。
如何测试内存泄漏等问题?在这个问题上有哪些优秀的AS3编程标准?
答案 0 :(得分:1)
答案 1 :(得分:1)
您似乎没有准备好MovieClip
垃圾收集实例。 This thread 可能对您非常有帮助。
正确丢弃MovieClip(或任何其他对象)时要涵盖的一些基本内容包括:
DisplayList
移除对象(如果它是DisplayObject
)。这是通过您已经完成的工作removeChild()
addEventListener()
时,请确保在不久的将来某个地方添加一个姐妹removeEventListener()
。我可以提供的建议是在对象的基类中包含处理所有这些内容的方法,例如remove()
或deconstruct()
。
以下是一个例子:
public function deconstruct():void
{
if(parent)
parent.removeChild(this);
removeEventListener(MouseEvent.CLICK, _onClick);
}
当您扩展此类并需要其他解除引用功能时,只需使用deconstruct()
方法构建:
override public function deconstruct():void
{
removeEventListener(MouseEvent.MOUSE_OVER, _mouseOver);
var i:int = someArray.indexOf(this);
someArray.splice(i, 1);
super.deconstruct();
}