Автор: ?
Разместил: Rhainer
Дата размещения: 15.12.2008
Источник: http://web-silver.ru/flash/tutorials/ea … -click.php

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

Шаг 1
1) Создайте новый файл. Размер сцены значения не имеет (в примере 300x200 пикселей).

2) На главной сцене нарисуйте небольшой круг и сделайте его movie clip.

3) Чтобы это сделать, выберите нарисованный вами круг и нажмите F8. В появившемся окне выберите Movie clip, дайте ему имя (на ваше усмотрение), и нажмите OK.

Шаг 2
Ничего сложного, правда? Теперь нам нужно применить экшены к этому клипу. Кликните по нему правой кнопкой мыши и выберите пункт «Actions» (действия). Откроется окно Actions.

Вставьте следующие экшены:

Код:
onClipEvent (load) {
_x = 0;
_y = 0;
speed = 5;
}
onClipEvent (mouseDown) {
endX = _root._xmouse;
endY = _root._ymouse;
}
onClipEvent (enterFrame) {
_x += (endX-_x)/speed;
_y += (endY-_y)/speed;
}

Теперь вы можете запустить ролик, нажав комбинацию клавиш CTRL+Enter.
Теперь мы объясним, как работает код

Во-первых, в объяснении нуждается функция onClipEvent(load):

Код:
onClipEvent (load) {
_x = 0;
_y = 0;
speed = 5;
}

Эта функция перемещает клип в заданные координаты x и y. Точка (0,0) – это верхний правый угол сцены.
Она также задаёт скорость эффекта (speed = 5;). Чем меньше скорость, тем быстрее эффект.

Далее рассмотрим предназначение функции onClipEvent(mouseDown):

Код:
onClipEvent (mouseDown) {
endX = _root._xmouse;
endY = _root._ymouse;
}

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

И последнее, что нам осталось – это функция onClipEvent(enterFrame):

Код:
onClipEvent (enterFrame) {
_x += (endX-_x)/speed;
_y += (endY-_y)/speed;
}

Это цикл, который берет текущие (x,y) координаты клипа и вычитает их из endX и endY переменных (которые вы задаете, когда кликаете мышью по сцене). Это значение становится все меньшим, т.к. клип приближается к выбранной точке и каждый раз делится на скорость. Это заставляет клип двигаться быстрее, когда он далеко от точки и медленнее, когда он к ней приближается.