Flash Builder项目无法在Flash CS4项目中侦听事件

时间:2010-01-28 09:13:23

标签: flex flash actionscript

我正在Flash Builder中开发一个项目,它将加载由Flash CS4构建的文件。 Flash CS4中的代码如下所示,它是一个doc类。我确信调用了dispatchEvent:

package {
import flash.display.MovieClip;
import flash.events.Event;

public class flashcs extends MovieClip
{
    public function flashcs():void
    {
        dispatchEvent(new Event("onPlayerLoaded", true));
    }

    public function playVideo():void
    {
        return;
    }
}

}

在Flash Builder中,我使用下面的代码来监听事件,但回调永远不会被调用:

            private function playerLoaded():void 
        {
            Player = MovieClip(Loader.content)
            Player.addEventListener("onPlayerLoaded",Callback);
        }
mx:SWFLoader id="Loader" source="http://localhost/flashcs.swf" init="playerLoaded()"

我想也许我只能收听SystemManager但不能收听MovieClip?因为我有一个先前的项目,加载的swf文件是由Flash Builder构建的,所以我正在毫无困难地收听SystemManager。

感谢。

1 个答案:

答案 0 :(得分:0)

complete event而不是init内尝试,如果dispatchEvent已经被解雇,那么你就无法听到它。

<mx:SWFLoader id="Loader" source="http://localhost/flashcs.swf" complete="playerLoaded()"/>

修改

在你加载的类中,延迟dispatch事件在将对象添加到阶段时触发它:

package {
 import flash.display.MovieClip;
 import flash.events.Event;

 public class flashcs extends MovieClip
 {
    public function flashcs():void
    {
        addEventListener(Event.ADDED_TO_STAGE, ready);
    }

    private function ready():void {
     removeEventListener(Event.ADDED_TO_STAGE, ready); 

     dispatchEvent(new Event("onPlayerLoaded", true));
    }

    public function playVideo():void
    {
        return;
    }
 }
}