БРОСАЕМ МУВИК МЫШКОЙ, ИНЕРЦИЯ
в этом уроке рассмотрим как схватить мувик и бросить его, и как сделать так, чтобы он полетел по инерции в нужном направлении и с нужной скоростью. Как обычно делаем мувик, рисуем в нем нарядный шарик и пишем:
onClipEvent (mouseDown) { // если кликнули мышкой
if (this.hitTest( /:_xmouse, /:_ymouse, 1 )) { // по мувику
drag = true; // переменнаЯ, указывающаЯ, что нужно таскать мувик за мышкой ставим true
}
}
onClipEvent (mouseUp) {// если отпустили мышку
drag = false; // переменнаЯ, указывающаЯ, что нужно таскать мувик принимает значение false
}
onClipEvent (mouseMove) {// когда двигаем мышкой
if (drag) { // если нужно таскать
_x = _parent._xmouse;
_y = _parent._ymouse;// таскаем, но не командой startDrag, котораЯ имеет свои ограничениЯ, а просто задаваЯ координате мувика значениЯ координаты мыши в родительском мувиклипе - в данном случае в руте.
updateAfterEvent();// обновлЯем экран длЯ плавности тасканиЯ
}
}
onClipEvent (enterFrame) {// каждый кадр
if (drag) { // если таскаем
sx =_x - x; sy =_y - y;// вычислЯем скорость тасканиЯ вычитаЯ из текущего значениЯ позиции значение позиции мувика в прошлом кадре по обеим осЯм.
x=_x;
y=_y;// длЯ использованиЯ в следующем кадре сохранЯем позицию мувика в переменных x и y
} else { // если не таскаем
_x += sx*=.9;
_y += sy*=.9;// то уменьшаем текущую скорость по соответствующей оси, умножаЯ на 0,9 (затухание), и затем увеличиваем значение позиции мувика на новое значение скорости.
}
}
как видите логика проста и незатейлива. Программная реализация по-моему может вызвать вопрос только при разборе логики сохранения и применения старой позиции. Старая позиция мувика у нас сохраняется в переменных х и у, но мы можем сделать это только после того, как использовали эти переменные для вычисления скорости таскания. Эти скорости (по осям соответственно) как раз и будут использованы в первом же кадре после отпускания мувика, но уже в каждом следующем кадре скорость будет уменьшаться за счет примененного затухания (поэкспериментируйте со значением затухания). В скрипте есть небольшой легкоисправимый недостаток: мувик таскается за центр. Это можно исправить, подумайте, как.
Если бросить мувик достаточно сильно, то он улетит за пределы экрана и не вернется. Но мы уже научились делать отскок от препятствий, который довольно просто можем применить к нашему скрипту. Весь рассчет нужно будет производить в части "если не таскаем". Попробуйте также сделать это сами.