2011-11-14 95 views
0

我似乎无法从加载的SWF文件访问任何东西。但是,我可以从加载的swf文件中访问父变量/方法。无法访问加载的SWF文件的方法

var ldr:ProLoader; 

function loadExternalSWF():void { 
    ldr = new ProLoader(); 
    ldr.load(new URLRequest("introAS3.swf")); 
    wrapperMC.addChild(ldr); 
} 

loadExternalSWF(); 

buttonNextMC.addEventListener(MouseEvent.CLICK, buttonNextMC_Click); 

function buttonNextMC_Click(event:MouseEvent):void { 
    MovieClip(wrapperMC).ldr.gotoAndPlay(31); 
} 

这只是给我的错误:

TypeError: Error #1010: A term is undefined and has no properties. 

编辑:wrapperMC只是,我已经创建并放置在舞台上加载外部电影到一个空的影片剪辑实例。

+0

什么是'wrapperMC'? –

+0

请参阅编辑。 – Caballero

+0

好的,是你在这个空剪辑里发布的代码吗?路径'wrapperMC.ldr'是否有效? –

回答

1

为什么wrapperMC有一个名为“ldr”的属性?你可以去:

function loadExternalSWF():void { 
    ldr = new ProLoader(); 
    ldr.load(new URLRequest("introAS3.swf")); 
    ldr.name = "ldr"; 
    wrapperMC.addChild(ldr); 
} 

function buttonNextMC_Click(event:MouseEvent):void { 
    MovieClip(MovieClip(wrapperMC).getChildByName("ldr")).gotoAndPlay(31); 
} 

在另一方面,这是不可能的,你加载的剪辑替换您的ProLoader对象,而不是它的将其添加到它自己的子集。在这种情况下,您必须让装载机小孩拨打gotoAndPlay()

没有的ProLoader是如何工作的知识,我假设你有以下子结构

wrapperMC - > LDR - > introAS3

,所以你可以一起去:

MovieClip(DisplayObjectContainer(wrapperMC.getChildAt(0)).getChildAt(0)).gotoAndPlay(31); 

但是,这是只有一个猜测。

+0

谢谢,第二种方法实际上工作。这太奇怪了,这么简单的事情一定很复杂。 – Caballero

+0

如果你直接引用了Loaders的内容而不是引用wrapperMC,那么所有东西都变成了更简单的HELL。它是你编码的方式,它要求它很复杂 – WORMSS