Автор: © gOloVasTicK
Фактически в данном уроке я рассмотрю три варианта. //Четвертый просто
улучшенный третий.
1. StartDrag 2. Трех-кадровый цикл 3.
onClipEvent(mouseMove)
Для начала открываем Flash. Рисуем четыре
круга.
Далее делаем наши кружочки кнопками
(поочередно отмечаем круги по одному и нажимаем F8 в появившемся меню выбираем
Button).
Теперь делаем их Муви Клипами
(поочередно отмечаем круги по одному и нажимаем F8 в появившемся меню выбираем
Movie Clip).
Способ 1. StartDrag Два раза кликаем на первый круг
(далее: входим в символ). Нажимаем на круг правой клавишей и выбираем в выпавшем
меню Actions. В окошке пишем (если вы работаете в Normal Mode, то выбирайте из
списка команд, хотя советую переходить в Expert Mode это можно сделать нажатием
клавиш Ctrl+E):
on (press) { startDrag (this, true); } on
(release) { stopDrag (); }
Наш первый
Драг готов. Можете проверить это протестировав Мувик. Работает это за счет
пары стандартных ф-й StartDrag() и StopDrag(). У стандартной ф-ии StartDrag
есть один недостаток, драгать вы можете только один мувик.
Способ 2.
Трех-кадровый цикл
Входим во второй круг-символ. Добавляем еще один
слой. В первом кадре пишем Action:
stop();
Продлеваем мувиклип до
трех кадров (отметьте кадр и нажмите F5). Отмечаем третий кадр, нажимаем
F6. В нем пишем:
_x = _root._xmouse; _y =
_root._ymouse; gotoAndPlay (2);
На
кнопке пишем Action:
on (press) { play (); } on (release,
releaseOutside) { gotoAndStop (1); }
Второй пример готов. Он
работает следующим образом: При нажатии на кнопку мувик начинает
проигрываться, дойдя до 3 кадра мувик приравнивает свою Х координату к Х
координате мыши, тоже самое происходит с У. Далее мув отправляется на второй
кадр. Образуеться цикл. При отпускании кнопки мув отправляет себя на первый
кадр, где и останавливаеться.
Способ 3. onClipEvent(mouseMove)
Не
входя в символ пишем Action прямо на мувик:
onClipEvent (mouseMove)
{ if (drag) { _x = _root._xmouse; _y = _root._ymouse; } }
Далее входим в символ и на кнопке пишем:
on
(press) { drag = 1; } on (release, releaseOutside) { drag =
0; }
Пример готов. Этот мувик выполняет код написанный на нем при
каждом движении мыши. Нажатием кнопки мы присваиваем переменной drag значение 1.
Теперь условие if(drag) на мувике исполняеться и аналогично с предидущим
примером мувик приравнивает свои координаты к мышке.
Способ 4. Улучшенный
3
Пример 3 исполняеться быстрее всего, единственный его недостаток это то
что переменная drag проверяеться при каждом движении мыши, а нам этого не надо.
Поэтому делаем следующее. Входим в наш четвертый кружок-символ и добавляем в
нем два слоя. В первом кадре верхнего слоя пишем:
stop();
На
кнопке пишем:
on (press) { gotoAndStop(2); } on (release,
releaseOutside) { gotoAndStop(1); }
Второй кадр второго слоя делаем
ключевым (F6). В нем делаем пустой символ (я делаю это так: русую круг, делаю
его символом, вхожу в символ, стираю круг). На нем пишем (на пустом символе, а
не внутри него):
onClipEvent (mouseMove) { _parent._x =
_root._xmouse; _parent._y = _root._ymouse; }
Пример готов. Усовершеннствование в том, что
движения мыши обрабатываються только после нажатия кнопки.
Вот в общем то
и все. Надеюсь это кому-нибудь поможет.
|