Как повторно передать пользовательское событие в другой класс (не родительский) во Flash? - PullRequest
3 голосов
/ 10 апреля 2011

Я не могу передать событие, потому что я хочу отправить другому классу, который не является даже видеоклипом, а простым классом.

Поэтому я преобразую предыдущий исходный код здесь Невозможно ли с помощью Flash получитьСоздатель экземпляра? для

private function onCustomEventType(e:CustomEvent):void
{
    trace(e.value);
    //redispatch
    this.dispatchEvent(e as CustomEvent);

}// end function

ошибка

преобразование flash.events в CustomEvent невозможно

Принимая во внимание, чтоCustomEvent, чтобы быть уверенным!

Ответы [ 2 ]

8 голосов
/ 10 апреля 2011

В вашем обработчике событий вы можете отправить событие снова.Но то, что происходит затем, это то, что Flash Player клонирует полученное событие в новое.Когда вы сделали свои собственные пользовательские события, вы должны всегда переопределять функцию clone ().В противном случае вы получите ошибки во время выполнения, такие как упомянутая вами.

в вашем случае ваш класс CustomEvent должен иметь этот метод

    override public function clone():Event
    {
        return new CustomEvent(type, bubbles, cancelable);
    }

, и если вашему конструктору нужны дополнительные параметры, обязательно добавьте их туда.

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

Пузырьки событий происходят не в объекте, который получает событие, а в объекте, который выполняет диспетчеризацию. Или, если быть точным, событие бурлит через всех предков отправляющего объекта. Так что вам не нужно об этом беспокоиться.

А также, вы уже получаете CustomEvent в вашей onCustomEventType -функции, поэтому нет необходимости разыгрывать ее.

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