提供的 DisplayObject 必须是调用者的子对象

Posted

技术标签:

【中文标题】提供的 DisplayObject 必须是调用者的子对象【英文标题】:The supplied DisplayObject must be a child of the caller 【发布时间】:2012-03-14 13:48:27 【问题描述】:

我有一个名为 mc 的容器,在他内部我生成了一个电影剪辑网格,以便制作一堵墙。当我选择此选项之一时,会出现以下消息:

错误 #2025:提供的 DisplayObject 必须是 来电者..

代码是:

在 Class iniciarApp 我有这个: var mc:MovieClip = new MovieClip(); var Grilla:Grilla = new Grilla(); mc.x = 0; mc.y = 0; mc.name = "正方形"; addChild(mc); Grilla.name = "烤架"; 格栅.x = mc.x; 格栅.y = mc.y; mc.addChild(烧烤); ---------- 在 Grilla.as 中: 公共类 Grilla 扩展 MovieClip 私有变量 boxNum:int = 48; 私有变量 cols:int = 6; 私有变量行:int = Math.ceil(boxNum / cols); 私有变量 boxCount:int = 0; 公共功能格里拉() for (var py:int = 0; py

【问题讨论】:

【参考方案1】:

试试 parent.removeChild(this);

虽然这不是最干净的方式。你最好发送一个 iniciarApp 会监听的事件。

【讨论】:

您的意思是我必须在创建格栅时分派一个事件( addEventListener(iniciarApp.removeChild(this), detectionEvent); 以及grilla.as中的以下代码?私有函数检测事件(e :Event):void 或者你有什么建议? 当你创建grilla时,你会做类似grilla.addEventListener(SomeEvent.STRING,removeGrilla); removeGrilla 是将其从显示列表中删除并删除其侦听器的方法。然后在 Grilla 的实例上,你会做 dispatchEvent(new SomeEvent(SomeEvent.STRING));【参考方案2】:

从上面的代码中并不清楚“grilla”对象实际上指的是什么。

如果你想移除格栅,你可以写:

grilla.parent.removeChild(grilla);

我不确定这是否是您想要做的。如果您要删除刚刚单击的对象,请尝试:

m.currentTarget.parent.removeChild(m.currentTarget);

更新:好的,我明白你现在要做什么了。

您需要使用关键字“this”来引用“grilla”的当前实例。

试试这个:

this.parent.removeChild(this);

【讨论】:

我尝试使用第一个代码,但没有任何变化:第 75 1120 行:访问未定义的属性格栅。 您将不得不提供更多信息。发布包含对象 grida 的其余代码

以上是关于提供的 DisplayObject 必须是调用者的子对象的主要内容,如果未能解决你的问题,请参考以下文章

使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象

动作脚本 3 - ArgumentError:错误 #2025:提供的 DisplayObject 必须是调用者的子对象

操作脚本3 - ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级

错误#2025:ActionScript编程问题

一个Loader加载多个swf

删除所有数组影片剪辑上的子项