БРОСАЕМ МУВИК МЫШКОЙ, ИНЕРЦИЯ

 

в этом уроке рассмотрим как схватить мувик и бросить его, и как сделать так, чтобы он полетел по инерции в нужном направлении и с нужной скоростью. Как обычно делаем мувик, рисуем в нем нарядный шарик и пишем:

 

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 (затухание), и затем увеличиваем значение позиции мувика на новое значение скорости.

}

}

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

Если бросить мувик достаточно сильно, то он улетит за пределы экрана и не вернется. Но мы уже научились делать отскок от препятствий, который довольно просто можем применить к нашему скрипту. Весь рассчет нужно будет производить в части "если не таскаем". Попробуйте также сделать это сами.

 

Hosted by uCoz