创建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。
我在这里缺少什么?
答案 0 :(得分:1)
您需要声明此public static const COMPLETE:String = 'complete';
,因为静态var / const不会转移到扩展类。
将CustomEvent转换为Event的错误可能是由于设置事件侦听器以侦听Event
而不是CustomEvent
。
答案 1 :(得分:0)
调度事件的位置以及侦听器的签名是什么样的?
答案 2 :(得分:0)
我们在这里要讨论几个问题:
您已将public static const COMPLETE
...注释掉了。为什么?如果您想将CustomEvent.COMPLETE
称为事件类型,则需要这样做。
使用我的心灵第三只眼,你的事件监听器就像这样声明:
public completeListener(evt:Event):void
...
这不会按你想要的方式运作。你需要
public completeListener(evt:CompleteEvent):Void
...
与编译问题无关,您的自定义事件还有另一个问题。您的克隆方法不会克隆assetName
属性。尝试这样的事情:
public override function clone():Event
{
var ret:CustomEvent = new CustomEvent(type, bubbles, cancelable);
ret.assetName = assetName;
return ret;
}