【问题标题】:Flash Buider project can't listen the event in a Flash CS4 projectFlash Buider 项目无法侦听 Flash CS4 项目中的事件
【发布时间】:2010-01-28 09:13:23
【问题描述】:

我正在 Flash Builder 中开发一个项目,该项目将加载由 Flash CS4 构建的文件。 Flash CS4 中的代码如下,它是一个文档类。我确定 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没有任何问题。

谢谢。

【问题讨论】:

    标签: apache-flex flash actionscript


    【解决方案1】:

    尝试在complete event 中而不是init 中,如果dispatchEvent 在您能够收听之前已被触发,您将无法听到。

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

    编辑:

    在您加载的类中,延迟调度事件以在将对象添加到阶段时触发它:

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

    【讨论】:

    • 好的,我已经进行了编辑,但我不明白您为什么需要 onPlayerLoaded 事件,因为您已经知道它是在侦听来自 SWFLoader 的 complete/init 事件时加载的。
    • 谢谢,但还是不行。我之所以使用它,是因为上层的要求。
    • 嗨,Patrick,你能把你的测试项目发给我吗?我真的很感激。
    • 嗨帕特里克,我通过添加一个 2 秒的计时器来解决它,在计时器处理程序中我发送事件以便容器 swf 可以接收......这很奇怪,我想知道有没有我可以用来确保容器 swf 可以接收我的事件的规则?
    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 2011-07-03
    • 2011-01-10
    • 2011-04-20
    • 2014-03-08
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多