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

时间:2013-05-07 19:43:04

标签: actionscript-3 flash dynamic actionscript movieclip

所以继续我的问题,我在舞台上有一个按钮,添加一个名为“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]

这里有什么建议吗?一直在寻找解决这个问题的其他方法,但都让我失望

-Todd

1 个答案:

答案 0 :(得分:0)

当您拨打fadeL时,您实际上正在抓取对stage.getChildAt(0)的引用(假设您显示的代码是您唯一一次将项目添加到显示列表中)。

将按钮处理程序更改为:

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);