这是我用flash经历过的最奇怪的无法解释和最令人沮丧的事情,我不知道如何解决这个问题。
考虑这个功能
public function trackDownloadHandler(event:MP3DownloadEvent):void
{
dispatchEvent(event);
//dispatchEvent(new MP3DownloadEvent(MP3DownloadEvent.OPEN,event.channelPadID))
}
我已经完成了这一百万次。一个特定的事件到达一个处理程序,它从它到达的类再次发送它。
但是出于某些奇怪的原因我收到了一个错误
TypeError: Error #1034: Type Coercion failed: cannot convert flash.events::Event@a06ebe1 to com.rocudo.audioEngine.events.MP3DownloadEvent.
我没有看到我在哪里试图转换任何地方?
所以我尝试了下一步,也许只是派遣一个全新的活动,看看它是如何成功的。实施如下。
public function trackDownloadHandler(event:MP3DownloadEvent):void
{
//dispatchEvent(event);
dispatchEvent(new MP3DownloadEvent(MP3DownloadEvent.OPEN,event.channelPadID))
}
但在这种情况下原始类型错误消息消失了,我得到一个新错误
Type was not found or compile time constant :Vector
到底是怎么回事?
答案 0 :(得分:2)
我认为问题可能在于没有在自定义MP3DownloadEvent中定义克隆方法。
Adobe Livedocs flash.events.Event clone()
返回一个新的Event对象 原始实例的副本 事件对象。你通常不打电话 克隆(); EventDispatcher类 当你自动调用它 重新发送一个事件 - 也就是说,当你 从a调用dispatchEvent(event) 正在处理事件的处理程序。
对于Vector错误,我相信Vector仅在CS4中可用。因此,如果您使用为CS4编写的代码(并使用Vecotrs),并且您正在使用CS3进行编译,则可能会出现这样的错误。
答案 1 :(得分:0)
也许是在调用trackDownloadHandler(event:MP3DownloadEvent)
的事件调度中?如果你只是发送一个香草Event
,那么你得到的错误就有意义了。