AS3:从另一个动态添加的孩子访问一个动态添加的孩子

Posted

技术标签:

【中文标题】AS3:从另一个动态添加的孩子访问一个动态添加的孩子【英文标题】:AS3: Accessing a dynamicaly added child from another dynamicaly added child 【发布时间】:2013-05-01 21:21:46 【问题描述】:

所以这是我的问题,我在舞台上有一个按钮,添加了一个名为“fadeL”和“PDF1”的 MC

快速说明:“fadeL”和“PDF1”是“fadeMC”和“PDFwindow”的实例,下面是它们的代码:

var fadeL:fadeMC = new fadeMC();
this.addChild(fadeL);
fadeL.x = 0;
fadeL.y = 0;   

var PDF1:PDFwindow = new PDFwindow();
this.addChild(PDF1);
PDF1.x = 30;
PDF1.y = 130; 

在 PDF1 中还有一个名为“PDFviewer”的 MC,其中包含一个名为 closeBtn 的按钮

这是该按钮的动作脚本:

var container:DisplayObjectContainer = stage.getChildAt(0) as DisplayObjectContainer;
var mc:MovieClip = container.getChildByName("fadeL") as MovieClip;
mc.gotoAndStop(12);

所以基本上我试图告诉“fadeL”从第 12 帧开始播放(最终使其淡出屏幕)

但这是按下 closeBtn 时出现的错误:

TypeError:错误 #1009:无法访问空对象引用的属性或方法。 在 NovartisTable_fla::PDFviewer_4/closeTap()[NovartisTable_fla.PDFviewer_4::frame1:9]

这里有什么建议吗?一直在寻找其他方法来解决这个问题,但都失败了

-托德

【问题讨论】:

您可能需要分享更多代码以获得相关帮助。 【参考方案1】:

当您调用 stage.getChildAt(0) 时,您实际上是在获取对 fadeL 的引用(假设您显示的代码是您向显示列表添加项目的唯一时间)。

将您的按钮处理程序更改为:

var mc:MovieClip = stage.getChildAt(0) as DisplayObjectContainer;
mc.gotoAndStop(12);

如果做不到这一点,我会给fadeL 一个实际的name,这样你就可以执行以下操作:

fadeL.name = "fadeL";
...
var mc:MovieClip = stage.getChildByName("fadeL") as MovieClip;
mc.gotoAndStop(12);

【讨论】:

以上是关于AS3:从另一个动态添加的孩子访问一个动态添加的孩子的主要内容,如果未能解决你的问题,请参考以下文章

从 AS3 文件动态添加 Flash 组件到舞台

从另一个指令中动态添加 VueJS 指令

删除这个孩子并添加新的孩子 AS3

如何从另一种方法向反应堆热通量动态添加元素?

不能有 2 个动态文本字段 AS3

Flex:在 AS3 中更改 Flex 组件样式