Слушатель в основном классе документа, для пользовательского события отправки, из другого класса не отвечает или не вызывает функцию - PullRequest
0 голосов
/ 02 апреля 2011

Привет, проблема из-за недостатка знаний:

У меня есть класс документа с именем Main.as В конструкторе класса у меня есть следующий слушатель:

enter code here
    var listeningFORModeChangeToStudent:Sprite = new Sprite;
listeningFORModeChangeToStudent.addEventListener(TellAllModeChangeToStudent.STUDENT,exp);
addChild(listeningFORModeChangeToStudent);

function exp(event:Event){
    trace("exp");
}

В классе с именемTellAllModeChangeToStudent У меня есть диспетчер:

enter code here

    public class TellAllModeChangeToStudent extends EventDispatcher{


    public static const STUDENT:String = "student";

    public function TellAllModeChangeToStudent() {
    }

    public  function tellAllModeChangeToStudent(){
        dispatchEvent(new Event(STUDENT));
        trace("event despatched");
    }
    }
   }

В третьем классе я делаю вызов диспетчеру в предыдущем классе:

enter code here 
var ThisTellAllModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent;
ThisTellAllModeChangeToStudent.tellAllModeChangeToStudent();

У меня есть операторы трассировки в любом случае, и из этого язнать, что вызывается диспетчер в TellAllModeChangeToStudent.

Проблема в том, что слушатель в main.as не вызывает функцию exp.Я не могу понять, почему, и я не знаю, как проверить, действительно ли слушатель видит событие отправки?

Это моя первая попытка использования депатчера и слушателей as3.Требуется помощь и руководство.С наилучшими пожеланиями Адриан.

1 Ответ

1 голос
/ 02 апреля 2011

Во-первых, эта строка в вашем классе Main.as

var listeningFORModeChangeToStudent:Sprite = new Sprite;

должна сказать,

var listeningFORModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent();

Во-вторых, класс TellAllModeChangeToStudent должен расширять Sprite вместо EventDispatcher.

public class TellAllModeChangeToStudent extends Sprite

В-третьих, вы создаете 2 разных экземпляра TellAllModeChangeToStudent, один в основном классе и один в третьем классе.Вы слушаете событие на одном из них и отправляете событие на другое.Вам нужно отправить ссылку на экземпляр TellAllModeChangeToStudent в Main.as третьему классу и отправить событие из этого экземпляра.

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