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

Мы могли бы зарегистрировать отдельные приемники для события щелчка кнопкой мыши в каждом из указанных объектов. Однако регистрация двух приемников событий приведет к увеличению длительности разработки и из-за повторения практически идентичного кода для регистрации приемников увеличит вероятность появления ошибок в нашем флажке. Вместо этого, чтобы избежать появления повторяющегося кода, мы можем обрабатывать все события щелчка кнопкой мыши в одном приемнике, зарегистрированном в объекте container. Поскольку объект container является отображаемым предком и для объекта icon, и для объекта label, он получает уведомления всякий раз, когда среда Flash выполняет диспетчеризацию события щелчка кнопкой мыши, получателем которого является любой из этих объектов. Когда выполняется код приемника объекта container, обрабатывающий события щелчка кнопкой мыши, мы знаем, что пользователь щелкнул либо на значке, либо на надписи, и в ответ на это действие мы можем изменить состояние флажка — установить или снять.

В листинге 21.2 представлен код для нашего примера с флажком. Части кода, связанные с обработкой событий, выделены полужирным шрифтом.

Листинг 21.2. Иерархическая обработка событий класса CheckBox

// Файл CheckBox. as package {

import flash. display.*;

import flash. events.*;

import flash. text.*;

// Очень простой элемент управления «флажок»

public class CheckBox extends Sprite { private var label-.TextField; // Текстовая надпись флажка private var icon:CheckBoxIcon; // Графический значок флажка private var checked:Boolean; // Флаг, который указывает, установлен

// ли флажок в настоящий момент

// Конструктор

public function CheckBox (msg:String) { // При создании объекта флажок не установлен checked = false;

// Создаем графический значок icon = new CheckBoxIcon( );

// Создаем текстовую надпись label = new TextField( ); label. text = msg;

label. autoSize = TextFieldAutoSize. LEFT; label. selectable = false;

// Размещаем текстовую надпись рядом с графическим значком label. х = icon. x + icon. width + 5;

// Добавляем объекты label и icon к данному объекту в качестве // его отображаемых детей addChild(icon); addChild(label);

// Регистрируем приемник для получения событий щелчка кнопкой мыши, // получателем которых является данный объект или любой // из его дочерних объектов (то есть label или icon) addEventListener(MouseEvent. CLICK, clickListener);

‘}

// Обрабатывает события щелчка кнопкой мыши. Этот метод выполняется // всякий раз, когда пользователь щелкает на объекте label или icon, private function clickListener (e:MouseEvent):void { if (checked) { icon. uncheck( ); checked = false; } else { icon. check( ); checked = true;

}

}

}

// Файл CheckBoxIcon. as package { import flash. display.*;

// Графический значок для элемента управления «флажок» public class CheckBoxIcon extends Sprite {

// Конструктор

public function CheckBoxIcon ( ) { uncheck( );

}

// Рисует значок флажка в состоянии «установлен» public function check ( ):void {

graphics. clear( );

graphics. lineStyle(l);

graphics. beginFi11(OxFFFFFF);

graphics. drawRect(0, 0, 15. 15);

graphics. endFill( );

graphics. lineTo(15, 15);

graphics. moveTo(0, 15); graphics. lineTo(15. 0);

}

// Рисует значок флажка в состоянии «снят» public function uncheck ( ):void {

graphics. clear( );

graphics. lineStyle(l);

graphics. beginFill(OxFFFFFF);

graphics. drawRect(0. 0, 15, 15);

}

}

}

// Файл CheckBoxDemo. as (основной класс, который использует класс CheckBox) package { import flash. display. Sprite;

// Демонстрирует использование класса CheckBox public class CheckboxDemo extends Sprite { public function CheckboxDemo( ) { var с;CheckBox = new CheckBox(«Click here»); addChild(c);

}

}

}

Мы познакомились с основами системы иерархической диспетчеризации событий языка ActionScript, но нам осталось рассмотреть еще несколько тем. Не будем сдаваться.

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

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

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

Полезные ссылки
Случайные записи
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 098
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 094
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 147
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 152
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.56
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 058
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.51
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.41
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 058
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 008
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 092
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.59
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.116
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.60
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.85
Опрос

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

View Results

Loading ... Loading ...