Март 2011

Руководство по 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.

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

2. Далее мы создаем функцию clickListener ( ), которая будет получать уведомления о возникновении событий MouseEvent. CLICK. Будьте внимательны: типом данных параметра функции clickListener ( ) является MouseEvent.

private function clickListener (e:MouseEvent):void { trace(«Mouse was clicked»);

}

3. Далее в соответствии с информацией в столбце «Получатель» табл. 22.1 мы определяем, что получателем события MouseClick. CLICK является объект InteractiveObj ect, на котором пользователь щелкнул кнопкой мыши. Мы хотим знать, когда щелкают на объекте theTextField, поэтому наш приемник события должен быть зарегистрирован либо в объекте theTextField, либо в одном из его отображаемых предков.

4. Для этого примера мы зарегистрируем приемник clickListener ( ) непосредственно в объекте-получателе TextField — theTextField, как показано в следующем коде:

theTextFi eld. addEventLi stener(MouseEvent. CLICK, cli ckLi stener);

В результате выполнения описанных шагов наш метод clickListener ( ) будет вызываться всякий раз, когда пользователь щелкает кнопкой мыши на объекте theTextField. В листинге 22.1 представлен код, демонстрирующий предыдущие шаги в контексте простого класса ClickableText.

Листинг 22.1. Обработка события MouseEvent. CLICK

package { import flash. display.*; import flash. text.*; import flash. events.*;

public class ClickableText extends Sprite { public function ClickableText ( ) { var theTextField:TextField = new TextField( ); theTextField. text = «Click here»;

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

theTextFi eld. addEventLi stener(MouseEvent. CLICK. cli ckLi stener);

}

private function clickListener (e:MouseEvent):void { traceC’Mouse was clicked»);

}

}

}

Все прошло практически без проблем. Рассмотрим другой пример. Следующий код регистрирует приемник mouseMoveListener ( ), выполняющийся всякий раз при перемещении мыши, когда указатель находится над объектом Sprite, на который ссылается переменная triangle.

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

// Создаем треугольник

var triangle:Sprite = new Sprite( );

tri angle. graphi cs.1i neSty1e(1);

triangle. graphics. beginFi 11 (OxOOFFOO, 1);

tri angle. graphi cs. moveTo(25. 0);

triangle. graphics. lineTo(50. 25);

triangle. graphics. lineTo(0. 25);

triangle. graphics. lineTo(25. 0);

triangle. graphics. endFil1( );

triangle. x = 200;

triangle. у = 100;

// Регистрируем приемник в объекте triangle для событий MouseEvent. M0USE_M0VE tri angle. addEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveLi stener);

// …где-то в классе определяем приемник

private function mouseMoveListener (e:MouseEvent):void {

trace(«mouse move»);

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

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

‘ I Объект не сможет получать уведомления о возникновении событий ввода, пока он не 19 будет добавлен в список отображения.

В листинге 22.2 предыдущий код, создающий треугольник, помещается в контекст основного класса MouseMotionSensor SWF-файла. Здесь объект triangle добавляется в список отображения, поэтому может получать уведомления о возникновении событий мыши.

Листинг 22.2. Обработка события MouseEvent. MOUSE_MOVE над треугольником

package { import flash. display.*; import flash. events.*;

public class MouseMotionSensor extends Sprite { public function MouseMotionSensor ( ) { // Создаем треугольник var triangle:Sprite = new Sprite( ); tri angle. graphi cs.1ineSty1e(1); tri angl e. graphi cs. begi nFi11(OxOOFFOO. 1); triangle. graphics. moveTo(25. 0); tri angle. graphi cs.1ineTo(50. 25); triangle. graphics. lineToCO. 25); triangle. graphics. lineTo(25. 0); triangle. graphics. endFil1( ); triangle. x = 200; triangle. у = 100;

// Добавляем объект triangle в список отображения addChild(triangle);

// Регистрируем приемник в объекте triangle для событий // MouseEvent. M0USE_M0VE

tri angle. addEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveLi stener);

}

private function mouseMoveListener (e:MouseEvent):void {

trace(«mouse move»);

Базовый код, описывающий приемник, и код, регистрирующий приемник, представленные в листинге 22.2, могут быть использованы для любого события из табл. 22.1.



Полезные ссылки
Случайные записи
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 136
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 116
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.81
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 062
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 134
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 013
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 021
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 019
  • 01.04.2010">Ресурсы с векторными шаблонами
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 079
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 053
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 069
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.41
  • 14.03.2010">Логотипы. Где их искать?
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.115
Опрос

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

View Results

Loading ... Loading ...