странное поведение событий во флэш-памяти AS3 - PullRequest
0 голосов
/ 09 февраля 2010

Это самая странная, необъяснимая и разочаровывающая вещь, с которой я столкнулся во флэш-памяти, и я понятия не имею, как решить проблему.

Рассмотрим эту функцию

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 ]

2 голосов
/ 09 февраля 2010

I думаю проблема может заключаться в том, что в вашем пользовательском MP3DownloadEvent не определен метод клонирования.

Adobe Livedocs flash.events.Event clone ()

Возвращает новый объект Event, который является копия оригинального экземпляра Объект события. Вы обычно не звоните Клон (); класс EventDispatcher вызывает это автоматически, когда вы повторно отправить событие, то есть когда вы вызовите dispatchEvent (событие) из обработчик, который обрабатывает событие.

Я полагаю, что из-за вашей ошибки Векторы доступны только в CS4. Итак, если вы используете код, написанный для CS4 (и используете Vecotrs), и вы компилируете с CS3, вы, скорее всего, получите такую ​​ошибку.

0 голосов
/ 09 февраля 2010

Может быть, это в диспетчере событий, который вызывает trackDownloadHandler(event:MP3DownloadEvent)? Если вы отправляете ваниль Event, то ошибка, которую вы получаете, будет иметь смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...