我正在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。
感谢。
答案 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;
}
}
}