闪存AS3中的奇怪事件行为

时间:2010-02-09 16:06:20

标签: flash actionscript-3 events

这是我用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

到底是怎么回事?

2 个答案:

答案 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,那么你得到的错误就有意义了。