Автор: ?
Разместил: 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 переменных (которые вы задаете, когда кликаете мышью по сцене). Это значение становится все меньшим, т.к. клип приближается к выбранной точке и каждый раз делится на скорость. Это заставляет клип двигаться быстрее, когда он далеко от точки и медленнее, когда он к ней приближается.