AS3 - 如何从嵌套动态加载的动画片段中调用根目录中的函数?

时间:2011-05-13 09:09:51

标签: flash actionscript-3

有没有人知道使用AS3从动态加载的动画片段(使用addchild加载)触发根中的函数的最佳方法,我知道定位root不是最好的方法吗?

由于 保罗

2 个答案:

答案 0 :(得分:1)

DanielB有一点,这不是真正的最佳设计...... 可以在加载影片时设置调用该函数的对象。这可以通过多种方式完成,例如......

private var _functionCaller:MovieClip;

private function onLoadComplete(event:Event):void
{
   _functionCaller = this.parent; // or this.parent.parent or whatever else  
}

private function callExternalFunction():void
{
    if( _functionCaller != null )
       _functionCaller.execute(); 
}

更好的方法可能是使用事件来通知root调用函数...

private var _dispatcher:EventDispatcher;

//this function will be called from the parent
public function init(dispatcher:EventDispatcher):void
{
   _dispatcher = dispatcher  
}

private function callExternalFunction():void
{ 
    // You could also create a Custom Event
    if( _dispatcher != null )
       _dispatcher.dispatchEvent("call external function");
}

答案 1 :(得分:0)

你应该考虑一下你的概念。你加载的SWF应该从它加载的电影中调用一个函数才能正常工作?所以加载的电影永远不会独立运行?

您应该在加载程序(父)swf中实现所有功能。加载器电影知道他正在加载什么,所以也许他可以在加载的剪辑上调用一个函数。但另一种方式就是糟糕的设计。

您可以COMPLETE(加载)或ADDED_TO_STAGE对已加载的电影做出反应,并以这种方式实现您的功能。