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

AddEventListener(MouseEvent. CLICK, clickListener);

}

// Возвращает название продукта public function getName ( ):String { return productName;

}

// Обрабатывает события MouseEvent. CLICK. В этом примере, чтобы выбрать // продукт и осуществить диспетчеризацию события // Product. PRODUCT_SELECTED, достаточно просто щелкнуть кнопкой мыши // на названии продукта. В более сложной реализации могут учитываться // другие факторы. Например, можно добавить возможность выбора // продуктов с помощью клавиатуры, а на время трансакции с сервером // отключать возможность выбора продуктов, private function clickListener (е:MouseEvent):void { // Уведомляем всех зарегистрированных приемников о том, что был выбран // данный продукт. Благодаря системе иерархической диспетчеризации // событий языка ActionScript, в процессе диспетчеризации // пользовательского события, получателем которого является данный // объект, вызываются не только приемники события // Product. PRODUCT_SELECTED данного объекта, но и приемники события // Product. PRODUCT_SELECTED, зарегистрированные в экземпляре класса // ShoppingBasket.

dispatchEvent(new Еvent(Product. PRODUCT_SELECTED, true));

}

}

}

В листинге 21.8 представлено очень простое приложение, демонстрирующее основы использования классов ShoppingBasket и Product из листингов 21.6 и 21.7.

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

Листинг 21.8. Демонстрация использования класса ShoppingDemo

package { import flash. display. Sprite:

public class ShoppingBasketDemo extends Sprite { public function ShoppingBasketDemo ( ) { var basket:ShoppingBasket = new ShoppingBasket( ): basket. addProduct(new Product(«Nintendo Wii»)); basket. addProduct(new Product(«Xbox 360″));

basket. addProduct(new Product(«PlayStation 3″)); addChild(basket);

}

}

Переходим к событиям ввода

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

ПИВА 22

Интерактивность

В этой главе мы рассмотрим, как можно добавить интерактивность в приложение, реагируя на события ввода Flash Player. В частности, мы познакомимся с пятью различными категориями событий ввода:

? мыши;

? фокуса;

? клавиатуры;

? текстовыми событиями;

? уровня приложения Flash Player.

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

Для каждой из перечисленных категорий мы рассмотрим конкретные события, предлагаемые интерфейсом API приложения Flash Player, и код, необходимый для обработки этих событий.

Представленные в этой главе описания событий относятся к приложению Flash Player (к версии, реализованной в виде модуля расширения браузера, и к автономной версии), но в целом данная информация применима и к любой другой среде, поддерживающей ввод данных с помощью мыши и клавиатуры (например, приложение Adobe AIR). Если вы используете другие среды выполнения, обязательно просмотрите соответствующую документацию по событиям ввода. Официальную справочную информацию, относящуюся к событиям ввода приложения Flash Player, можно найти в разделе Constants описания класса Event и его подклассов в справочнике по языку ActionScript корпорации Adobe. Полезная информация также находится в разделе Events описания классов TextField, DisplayObject, InteractiveObject и Stage.

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

Только экземпляры класса InteractiveObject. Уведомления о возникновении событий ввода отправляются экземплярам только тех классов, которые наследуются от класса InteractiveObject (Sprite, TextField, Stage, Loader, MovieClip, SimpleButton и подклассов этих классов). Объекты других типов не получают уведомления о возникновении событий ввода, даже если эти объекты находятся в списке отображения. Например, экземпляры класса Shape могут помещаться в список отображения, однако класс Shape не наследуется от класса InteractiveObject, поэтому экземпляры класса Shape не получают уведомления о возникновении событий ввода. Если объект Shape визуально перекрывает объект TextField и пользователь щелкает кнопкой мыши на объекте Shape, получателем результирующего события щелчка будет являться не Shape,

a TextField. Чтобы организовать взаимодействие с объектом Shape или объектом Bitmap, поместите его в контейнер (Sprite или MovieClip) и зарегистрируйте приемник в этом контейнере для событий ввода.

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

Поведение по умолчанию. Некоторые события ввода вызывают стандартную реакцию приложения Flash Player, называемую поведением по умолчанию. Например, перемещение указателя мыши над экземпляром класса SimpleButton приводит к тому, что этот экземпляр отображает графическое изображение, связанное с состоянием «над» (когда указатель мыши находится над данным экземпляром). В некоторых случаях поведение по умолчанию приложения Flash Player может быть отменено путем вызова метода экземпляра preventDefault ( ) класса Event. Дополнительную информацию можно найти в разд. «Отмена стандартного поведения событий» гл. 12.

Теперь переходим непосредственно к событиям!

События мыши

Приложение Flash Player выполняет диспетчеризацию событий мыши, когда пользователь производит манипуляции с системным указательным устройством. К указательным устройствам, которые могут генерировать события мыши, относятся: мышь, трекбол, сенсорный планшет ноутбука, джойстик ноутбука и перо. Тем не менее для удобства в этой книге используется всеобъемлющий термин «мышь», подразумевающий системное указательное устройство. События мыши могут возникать в результате следующих типов манипуляций:

? нажатие или отпускание левой кнопки мыши;

? перемещение указателя;

? использование колесика прокрутки мыши (например, вращение).

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

Обратите внимание, что «щелчок правой кнопкой мыши» (то есть нажатие вспомогательной кнопки мыши) не включен в приведенный список. Приложение Flash Player генерирует события мыши только для основной (левой) кнопки мыши. Тем не менее стандартное контекстное меню приложения Flash Player, которое открывается щелчком вспомогательной кнопкой мыши, является настраиваемым. Дополнительную информацию можно найти в описании класса ContextMenu справочника по языку ActionScript корпорации Adobe.

Внутренние события мыши приложения Flash Player

В табл. 22.1 перечислены типы внутренних событий приложения Flash Player. Для каждого типа события столбец «Тип события» содержит константу класса

MouseEvent, представляющую официальное строковое название типа события. В столбце «Описание» указывается конкретное действие пользователя, приводящее к возникновению этого события. Столбец «Получатель» определяет объект, который играет роль получателя события при его диспетчеризации. Столбец «Поведение по умолчанию» описывает стандартную реакцию приложения Flash Player на данное событие. Столбец «Всплывает» содержит информацию о том, имеет ли данное событие фазу всплытия. Столбец «Тип данных объекта, передаваемого в функцию-приемник» определяет тип данных объекта, передаваемого в функцию-приемник, обрабатывающую данное событие. Наконец, столбец «Примечание» содержит важную информацию, касающуюся использования данного события.

Потратьте немного времени, чтобы познакомиться с событиями мыши приложения Flash Player, внимательно изучив табл. 22.1. Однако сначала рассмотрим несколько основных моментов, которые необходимо иметь в виду при чтении информации, представленной в таблице.

Системный фокус — следующие события генерируются даже тогда, когда приложение Flash Player не имеет системного фокуса: MouseEvent. MOUSE MOVE, MouseEvent. MOUSEjOVER, MouseEvent. MOUSE_OUT, MouseEvent. ROLL_OVER и MouseEvent. ROLL_OUT. Все остальные события мыши генерируются только в том случае, когда приложение имеет системный фокус.

Местоположение имеет значение — диспетчеризация событий не выполняется, когда пользователь манипулирует мышью за пределами области отображения приложения Flash Player, с одним исключением: если пользователь нажимает основную кнопку мыши в области отображения приложения Flash Player и затем отпускает ее за пределами этой области, выполняется диспетчеризация события MouseEvent. MOUSE_UP.

Для того чтобы получить уведомление, когда указатель мыши покидает область отображения приложения Flash Player, зарегистрируйте приемник для события Event. MOUSE_MOVE, как рассматривается далее в разд. «События ввода уровня приложения Flash Player».

Векторные изображения игнорируются в экземпляре основного класса — взаимодействие мыши с векторным содержимым, нарисованным через переменную экземпляра graphics основного класса SWF-файла, не вызывает генерацию событий мыши. Тем не менее генерация событий мыши происходит в результате взаимодействия мыши с векторным содержимым, нарисованным через переменную экземпляра graphics любого другого экземпляра класса InteractiveObj ect или его подклассов.

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

Поведение по умолчанию отменить нельзя — поведение по умолчанию приложения Flash Player нельзя отменить ни для какого типа событий мыши.

Мгновенное обновление экрана — чтобы обновить содержимое на экране после обработки любого события мыши, используйте метод экземпляра updateAf terEvent ( ) класса MouseEvent. Полную информацию можно найти в разд. «Постсобытийные обновления экрана» гл. 23.

а

Ъ z

X

2

is 5?

II

S

V о о-

2S

X

Z

> о

3

D3 О

а

На* О. О? о

П. Й1

™ S fe о; 1 ш (л -9-

— т

е

t

11

Q js р о z

S 5 i

fD —

1

____ о к °

S|S 8 i i

^ij s s ° S

31 11s

s 2 ш 2 >s

s

г ГО О Л I-н I С

О? H О? _ Z О X Z

о

X

z *

0 S О. с;

1 *

О *

» 5′

s

с;

fD 0Q

fD

3

is

fD

OQ

И

и 3 О 3

s 2 w x P

fD

X

g

_ о

Ц

is

лю a, 5 ° c aJ

го го s JP.

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

Го X X Q-

05

о О

z z

С CL ш Ш

Z Z

с

$

Ш

?3

т

июй и

е

о

2 Si

-г га ш

J [S

s vS Ф

HOE

If

u

s

ra

2

3

ro

ro

ra

7

§ z

i

о

5

t

i s g &

Si!

5 h с I ‘

с h ш 0 ‘

s 5 о §. !

5 VO О 3 I

ш о o. m i

i о z

5 к

3*8 5 я 53 5 <

ill

§

¦H о

b tj g |’| ш 2 о 05 * 2

с о

cd

I. til

с

a

О) к

II

о ш z z

ф s-

> Q.

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

Btj g

- ro g

ra m

S

>• S Os 3

3 2 О?

ra ~ ш i Z ь

i о ci cc. у i ra S ^ 4 i

t g §.° z vgiS ¦= g E ^

iff

SB

Ь h 1 § ь

s 5 ш 1 >¦

С I О С LL

-o * ra

g * as

и

ш ш

Jo

Z Q

ш ш

z z

of ш ш1

Я»

зЗ

Z Z

су s н 2 I Hi J а

m oj vo

Зсл or

OJ ГО 5

5 5 ,^ H Q

2 i о f-g

X m IT OJ *

1

Я OJ +i

hi

5. с о о ^ fc

X 3 T ^

¦ ^» — w

i ^ т n

¦ ? oj bs

i e si

m OJ r J3

OJ ro

$ I e|

ro

P5 jj if

ill

all

oj o ° с?

Jfc 5 ro

J Ш I

i. a oj о

oj js

S = 2

p

E s з

x s Z

iitll

a^p^» p п! s 11 si s

f?. — о Й

Ю ^ QJ >

О О п; эх с;

J — О. О, О О

X С С X С

С

S

3

о Z

го

5,2 ш „««ё 8 ш

с 2 го >5 й и vo о. л о. ш о VO О. 3

I

I

1.8

? и ш

ill

Z 1= го

5 ш

ш о

X 0J

i

§5

а3:

с X

° 3

5 81

z ™ »

8 5 iT

§ = Р

! *S J

* F ^ =Г oj fD

8S

о

Q.

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

15

CO *

о s

Q. I

5 z

> Q — oj

а Я i 8

JO’

S

LU

ro

CO *

a-

III

8

vo ё 9- s vg o? Я з 8

fD X

?z

m -

я § S 9

.1 &|* ё г

ai 2 *

8″

В S 8 I

5’5

О Q.

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

U U Q.

oj fD ь VO

> с m о о

1p

# 0 ?

I I p I ^ p s S й Б

(D * (U О (D

a s. s>5$

> С I Q-iS

= а«1ё

ro s>

я s t 5





Q. ГО

g a* gj g, oj

л О 1 I ro ifl

О ^ flj _ Q. VO

s ою 8i I

lI О ГО н 5 s oj i i m ^

m

z о

i|

5 о

о

- oj, 5

1 С 3

го о Э со л

0J

ей и о «2 и i

го? 5

oj О ш ш1

о О Z Z

15

ш О

1=/

о о Z?

р

6 О Z Z

Регистрация приемников для событий мыши

Для регистрации приемника для события мыши используется следующая базовая процедура.

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

1. Применяя информацию о событии в столбце «Описание» табл. 22.1, найдите константу для желаемого типа события в столбце «Тип события».

2. Создайте функцию-приемник с единственным параметром, имеющим тип данных MouseEvent.

3. Просмотрите столбец «Получатель» табл. 22.1, чтобы определить объект-получателя события.

4. Наконец, зарегистрируйте функцию, определенную на шаге 2 либо в объекте-получателе события (для уведомлений в фазе получения), либо в одном из предков объекта-получателя (для уведомлений в фазе захвата или в фазе всплытия). Большинство событий мыши обрабатывается приемниками, зарегистрированными в получателе события (то есть в объекте, который концептуально получает данные).

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

var theTextField:TextField = new TextField( ); theTextField. text = «Click here»;

theTextField. autoSize = TextFieldAutoSize. LEFT; theTextField. border = true; theTextField. background = true; theTextField. selectable = false;

Мы осуществляем следующие шаги.

1. Используя информацию в столбце «Описание» табл. 22.1, мы определяем, что константой события щелчка кнопкой мыши является MouseEvent. CLICK.



Полезные ссылки
Случайные записи
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 033
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 077
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 070
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 079
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.83
  • 31.07.2011">Выбери свой онлайн-фоторедактор
  • 22.02.2013">Самса с курицей
  • 11.07.2010">Работаем над идеей
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 056
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 115
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.92
  • 17.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.5
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.1
  • 29.02.2012">«Яндекс.Диск» — российский ответ сервису iCloud от Apple
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 090
Опрос

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

View Results

Loading ... Loading ...