我在创建CustomEvent时遇到了一些奇怪的错误,似乎扩展的事件不提供对事件属性的访问:
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);
我得到的错误是完整不存在...好的,我把它设置到一个地方,然后它解释说不能把CustomEvent转换成Event。
我错过了什么??
发布于 2012-06-07 19:56:57
您需要将此public static const COMPLETE:String = 'complete';
声明为静态变量/常量不会被转移到扩展类。
将CustomEvent转换为Event的错误可能是因为将event listener设置为侦听Event
而不是CustomEvent
。
发布于 2012-06-07 19:18:28
事件被分派到哪里,监听器的签名是什么样子的?
发布于 2012-06-08 03:05:40
我们在这里有几个问题要讨论:
public static const COMPLETE
...注释掉了。为什么?如果你想引用CustomEvent.COMPLETE
作为事件类型,这是必要的。公共事件(evt:completeListener):无效...
这不会以你想要的方式工作。你需要
public completeListener(evt:CompleteEvent):Void ...
assetName
属性。尝试如下所示:公共覆盖函数CustomEvent():Event{ var ret:CustomEvent =新类型(类型,气泡,可取消);ret.assetName = assetName; ret;}
https://stackoverflow.com/questions/10930700
复制相似问题