AS3 CustomEvent根本没有扩展?

时间:2012-06-07 11:15:06

标签: actionscript-3 custom-event

创建CustomEvent时出现一些奇怪的错误,看来正在扩展的事件不能访问Event属性:

package 
{
    import flash.events.Event;
    public class CustomEvent extends Event
    {

        //public static const COMPLETE:String = 'complete';

        private var _assetName:String;
        public function get assetName ():String
        {
            return _assetName;
        }
        public function set assetName ( aname:String ):void
        {
            _assetName = aname;
        }

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

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

做的时候:

myObj.addEventListener(CustomEvent.COMPLETE, objLoaded);

我得到COMPLETE不存在的错误...好吧,我将它设置到该位置然后它就是无法将CustomEvent转换为事件的caomplains。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

您需要声明此public static const COMPLETE:String = 'complete';,因为静态var / const不会转移到扩展类。

将CustomEvent转换为Event的错误可能是由于设置事件侦听器以侦听Event而不是CustomEvent

答案 1 :(得分:0)

调度事件的位置以及侦听器的签名是什么样的?

答案 2 :(得分:0)

我们在这里要讨论几个问题:

  1. 您已将public static const COMPLETE ...注释掉了。为什么?如果您想将CustomEvent.COMPLETE称为事件类型,则需要这样做。

  2. 使用我的心灵第三只眼,你的事件监听器就像这样声明:

    public completeListener(evt:Event):void
    ...
    

    这不会按你想要的方式运作。你需要

    public completeListener(evt:CompleteEvent):Void
    ...
    
  3. 与编译问题无关,您的自定义事件还有另一个问题。您的克隆方法不会克隆assetName属性。尝试这样的事情:

    public override function clone():Event
    {
        var ret:CustomEvent = new CustomEvent(type, bubbles, cancelable);
        ret.assetName = assetName;
        return ret;
    }