调度的事件不会在ActionScript中收到

时间:2015-03-09 12:04:04

标签: actionscript-3 flash-cs6

我创建了一个活动:

package  {
    import flash.events.Event;
    public class TimeOutEvent extends Event{
        public static const TIMEOUT:String = "timeOut";
        public function TimeOutEvent(
            type:String=TIMEOUT,bubbles:Boolean=true, cancelable:Boolean=false
        ){
            super(type, bubbles, cancelable);
        }   
        public override function clone():Event{
            return new TimeOutEvent(type,bubbles, cancelable);
        }
    }
}

并将其发送到另一个班级:

dispatchEvent( new TimeOutEvent(TimeOutEvent.TIMEOUT));

这两个类都在dashboard.swf文件中,我在另一个swf文件(main.swf)中监听这个事件:

addEventListener("timeOut",timeOut);

public function timeOut(e:Event):void{
    trace(“horaaaaa”);
}

我从mail.swf中的dashboard.swf加载并获取实例 当我从adobe flash professional运行它时,它可以正常工作,但是当我从浏览器打开它时它将无法工作。

任何想法!! ?? 谢谢你的帮助,对不起语言很抱歉。

2 个答案:

答案 0 :(得分:0)

我只是尝试在TimeOutEvent类中进行一些小的更改以及我添加eventListener的方式。我测试并且工作正常。

按照我的更改:

// TimeOutEvent.as
package
{
    import flash.events.Event;

    public class TimeOutEvent extends Event
    {
         public static const TIME_OUT:String = 'timeOut';

         public function TimeOutEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
         {
             super(type, bubbles, cancelable);
         }

         override public function clone():Event
         {
             return new TimeOutEvent(type, bubbles, cancelable);
         }
    }
}

// Main.as

addEventListener(TimeOutEvent.TIME_OUT, timeOutHandler);

dispatchEvent(new TimeOutEvent(TimeOutEvent.TIME_OUT));


private function timeOutHandler(event:TimeOutEvent):void
{
    trace('horaaaaa');
}

答案 1 :(得分:0)

在Flash Pro中运行代码相当于将代码作为Windows AIR应用程序运行。但是,在浏览器中运行是一个非常不同的事情。浏览器中的某些运行时限制可能阻碍您在SWF文件之间进行通信的工作。