【问题标题】:The supplied DisplayObject must be a child of the caller提供的 DisplayObject 必须是调用者的子对象
【发布时间】:2013-04-18 11:23:54
【问题描述】:
是的,我知道这个问题一直被问到,但我缺乏经验使我无法找到答案。如果单击按钮,我只是想从屏幕上删除一个对象-
public function but1click(evtObj:MouseEvent)
{
trace("button one clicked");
if (gracestate == "grace")
{
removeChild(grace);
trace("grace removed");
}
}
我跟踪了对象的父对象 (grace),它返回为 null。这让我发疯,非常感谢您的帮助!
【问题讨论】:
标签:
actionscript
removechild
【解决方案1】:
虽然最可能的问题似乎是您正在将一个值存储到正在被垃圾收集/删除的优雅中,但问题尚不清楚。
如果你在函数内部创建了一个变量,但在函数外部没有对该变量的引用,它将被 GC'd。基本上任何没有被其他东西引用的东西都会被删除,唯一不适用的对象是时间线。这可以防止 Flash 播放器滞后并避免 RAM 变满时出现错误。因此:
function createGrace () {
var grace = new Object();
addChild(grace);
}
trace (grace); // returns null
var grace:Object;
function createGrace () {
grace = new Object();
addChild(grace);
}
trace (grace); // returns [Object]