Руководство по actionscript. часть 2, стр. 068

? Название приемника события записано с ошибкой: пропущена еще одна буква е. Компилятор сгенерирует ошибку, которая предупредит программиста о том, что регистрируемый приемник не существует.

? Типом данных первого параметра, передаваемого в метод completeListener ( ), является Мои s еЕ ve n t, который не соответствует типу данных событийного объекта для события Event. COMPLETE. На этапе диспетчеризации события среда выполнения Flash сгенерирует ошибку, которая предупредит программиста, что приемник не может обработать переданный в него событийный объект.

Если мы изменим предыдущий код, исправив все указанные ошибки типа, диспетчеризация события и его обработка будут успешно выполнены.

^ I Соглашение между приемником события и объектом, который регистрирует этот при-d, m емник, основанное на типах данных, позволяет гарантировать корректное выполнение нашего кода, обрабатывающего события.

Тем не менее соглашение между приемником и объектом, регистрирующим этот приемник, имеет один недостаток: оно не гарантирует, что объект поддерживает указанный тип события. Например, рассмотрим следующим код, который регистрирует приемник в объекте urlLoader для событий TextEvent. TEXT_INPUT:

url Loader. addEventLi stener (TextEvent. TEXTJNPUT. text InputLi stener);

Хотя с практической точки зрения у нас есть все основания полагать, что объект URLLoader никогда не будет получателем события TextEvent. TEXT_INPUT, приведенный код не вызовет ошибки. В языке ActionScript регистрация приемников для событий осуществляется по любому имени. Например, следующий бессмысленный код также является допустимым:

urlLoader. addEventLi stener(«dlrognw», dlrognwLi stener);

Каким бы очевидным ни казалось то, что объект urlLoader никогда не будет получателем события с именем 11 dl rognw «, программа на самом деле может выполнить диспетчеризацию такого события. Это демонстрирует следующий код:

urlLoader. dispatchEvent(new Event(«dlrognw»));

Учитывая, что программа имеет возможность назначать любой объект в качестве получателя любого события, язык ActionScript намеренно не использует концепцию «поддерживаемых событий». Подобная гибкость является предметом споров, поскольку она может привести к трудновыявляемым ошибкам в коде. Например, предположим, что мы используем класс Loader для загрузки внешнего изображения, как показано в следующем коде:

var loader:Loader = new Loader( );

1oader.1oad(new URLRequest(«i mage. jpg»)):

Предположим также, что объект loader будет являться получателем событий, информирующих о завершении загрузки изображения (во многом аналогично тому, как объект URLLoader является получателем событий о завершении загрузки элемента). Таким образом, мы пытаемся обработать событие Event. COMPLETE для нашего загружаемого элемента, зарегистрировав приемник непосредственно в объекте Loader, как показано в следующем коде:

1oader. addEventLi stener(Event. COMPLETE. completeLi stener);

Запустив код, мы будем удивлены, поскольку, даже несмотря на отсутствие ошибок, метод completeListener ( ) не был вызван ни разу. Так как никаких ошибок не возникло, мы не сможем сразу же определить источник проблемы в нашем коде. Последующий анализ и отладка кода будут стоить нам времени и, по всей вероятности, значительного неудовлетворения. Только прочитав соответствующий раздел документации корпорации Adobe, мы определим проблему: объекты Loader на самом деле не являются получателями событий о завершении загрузки; вместо этого события о завершении загрузки должны обрабатываться

экземпляром класса Loaderlnf о каждого объекта Loader, как показано в следующем коде:

1oader. contentLoaderInfо. addEventLi stener(Event. COMPLETE. completeLi stener);

В будущем язык ActionScript, возможно, позволит классам перечислять события, которые они поддерживают, и генерировать соответствующие предупреждения компилятора на попытки зарегистрировать приемник на события, которые не поддерживаются данным классом. Пока же классы, которые реализуют пользовательские события, путем переопределения метода addEventListener ( ) могут самостоятельно генерировать пользовательские ошибки в тех случаях, когда программа пытается зарегистрировать приемник для неподдерживаемых событий, как показано в следующем коде:

public override function addEventListener(eventType:String.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 151
  • 17.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.9
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 061
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 065
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.23
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 019
  • 01.10.2010">Что такое экшен и как с ним работать?
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 070
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 076
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.150
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 012
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 049
  • 18.07.2010">Лучшие модули для сайта
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 076
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.28
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...