2011-01-27 4 views
0

Когда я пытаюсь создать addEventListener, я получаю сообщение об ошибке: Строка 20 1046: Тип не был найден или не был константой времени компиляции: Событие.addEventListener ENTER_FRAME

package player { 
    import flash.media.Sound; 
    import flash.net.URLRequest; 

    public class Stream { 
     private var _Sound = null; 
     private var _Channel = null; 

     function Stream(){ 
      this._Sound = new Sound(); 
     } 

     public function play(url){ 
      this._Sound.load(new URLRequest(url)); 
      this._Channel = this._Sound.play(); 

      this.addEventListener(Event.ENTER_FRAME, this.myFunction); 
     } 

     private function myFunction(e:Event){ 

     } 
    } 
} 
+0

См. Мой пересмотренный ответ. –

+0

Сделайте свой класс Stream расширенным EventDispatcher и импортируйте flash.events.EventDispatcher – TheDarkIn1978

+0

Вам не нужно использовать все «это». префиксы здесь. –

ответ

4

import flash.events.Event; идет в верхней части под package player {.

Вам необходимо импортировать событие перед его использованием.

Update:

package player { 
    import flash.events.Event; 
    import flash.media.Sound; 
    import flash.net.URLRequest; 
    import flash.display.Sprite; 

    public class Stream extends Sprite { 
     private var _Sound = null; 
     private var _Channel = null; 

     public function Stream(){ 
      this._Sound = new Sound(); 
     } 

     public function play(url){ 
      this._Sound.load(new URLRequest(url)); 
      this._Channel = this._Sound.play(); 

      this.addEventListener(Event.ENTER_FRAME, this.myFunction); 
     } 

     private function myFunction(e:Event){ 

     } 
    } 
} 

Используйте этот код. Как правило, вы хотите добавить событие ENTER_FRAME к экранному объекту. Класс Sprite является экранным объектом. Я делаю это Sprite, используя ключевое слово extends. Обратите внимание, что вам нужно импортировать класс, который вы продлеваете, как я уже делал.

+0

спасибо! :) На самом деле я пытался распространяться с помощью Sprite, но я забыл импортировать класс – clarkk

+0

кстати. как передать аргументы myFunction с помощью addEventListener? – clarkk

+1

Вы не можете передавать аргументы напрямую через прослушиватель. Для этого вам нужно создать свой собственный класс событий, который расширяет «Событие» и создает там переменную. –

0

Инструкция:

this.addEventListener (Event.ENTER_FRAME, this.myFunction); использует это для самостоятельной ссылки на экземпляр игрока, но this.myFunction является избыточным, поскольку myFunction уже является методом, принадлежащим экземпляру игрока.

Вместо этого используйте: this.addEventListener (Event.ENTER_FRAME, myFunction);

+0

теперь я получаю это: Строка 18 \t 1061: Позвоните, возможно, с неопределенным методом addEventListener через ссылку с игроком статического типа: Stream. Я добавил импорт flash.events.Event; На вершине – clarkk

Смежные вопросы