【发布时间】:2012-11-25 02:36:06
【问题描述】:
我创建了一个自定义事件,我想用它在两个模块之间传递一个字符串。事件如下所示:
package com.mypackage.events
{
import flash.events.Event;
public class ThumbDeleteEvent extends Event
{
public static const THUMBS_DELETED:String = "thumbsDeleted";
public var files:String;
public function ThumbDeleteEvent(type:String, files:String)
{
super(type);
this.files = files;
}
// Override the inherited clone() method.
override public function clone():Event {
return new ThumbDeleteEvent(type, files);
}
}
}
在一个模块中,我像这样调度事件:
parentApplication.dispatchEvent(new ThumbDeleteEvent("parentApplication.thumbsDeleted", files));
在另一个模块中,我像这样监听事件:
public function init():void {
parentApplication.addEventListener("parentApplication.thumbsDeleted", onThumbsDelete);
}
如果我使用 ThumbsDeleteEvent 作为传入侦听器函数的类型,如下所示:
public function onThumbsDelete(evt:ThumbDeleteEvent):void{
trace("thumb delete event for thumbs: "+evt.files);
}
我收到以下错误:
TypeError: Error #1034: Type Coercion failed: cannot convert com.mypackage.events::ThumbDeleteEvent@26748a31 to com.mypackage.events.ThumbDeleteEvent.
如果我只是使用 Event 作为传入侦听器函数的类型,如下所示:
public function onThumbsDelete(evt:ThumbDeleteEvent):void{
if(evt is ThumbDeleteEvent){
trace("thumb delete event for thumbs: "+(evt as ThumbDeleteEvent).files);
}else{
var type:XML = describeType(evt);
trace(type.toXMLString());
}
}
它工作但不认为它是 ThumbDeleteEvent 类型类(它命中 else 语句)描述类型的 xml 输出说它的类型是:
type name="com.mypackage.events::ThumbDeleteEvent"
这里发生了什么?如果我在调试器中放置一个断点,它会说事件是 ThumbDeleteEvent,我可以看到 files 参数及其正确性???
【问题讨论】:
-
我看不出你在做什么有什么问题。您是否尝试过清理项目或关闭并重新启动 IDE(有时在 Flex/FlashBuilder 中工作)?如果没有,请尝试重命名该类。
-
是的,我已经尝试了我能想到的一切,清理项目重新启动 IDE,重命名类,以我能想到的各种方式投射对象——我已经准备好开始扔东西了。我想要的数据就在那儿,当我在调试器中设置断点时我可以看到它,我就是无法得到它!!!!
-
对于比我更了解 actionscript 的人来说可能有意义的一条线索是 - 如果我对我的对象执行 describeType,我会得到:type name="com.mypackage. events::ThumbDeleteEvent" 如果我描述任何其他对象,例如我得到的字符串: type name="String" 它没有完整路径和 ::,我真的只是想我需要知道到底是什么我应该将它转换为类似 (evt as com.mypackage.events::ThumbDeleteEvent) 的东西,这显然不起作用,但必须有某种方法可以到达对象。
-
这可能是一个无知的问题,但事件在两个位置“导入”的方式是否相同?
-
如果您将它作为“事件”传递,但在收到时将其转换为您的事件类型,会发生什么?
标签: actionscript-3 apache-flex actionscript flex3 flex4.5