Вход

Просмотр полной версии : затухание при перемещении


DJ_Baton
20.11.2007, 17:10
И так, распишу подробно, есть в общем мувик относительно которого исчисляются координаты (_root.smallmap), есть мувик внутри него который по этим координатам двигается (_root.smallmap.mappoint).

СКРИПТЫ В РУТЕ:
onEnterFrame = function () {
i = 2; //скорость перемещения мувика
};

СКРИПТ В КНОПКЕ:

on (release) {
onEnterFrame = function () {
if (_root.smallmap.mappoint._x<216) {
_root.smallmap.mappoint._x = _root.smallmap.mappoint._x+i;
}
if (_root.smallmap.mappoint._x>216) {
_root.smallmap.mappoint._x = _root.smallmap.mappoint._x-i;
}
if (_root.smallmap.mappoint._y<5) {
_root.smallmap.mappoint._y = _root.smallmap.mappoint._y+i;
}
if (_root.smallmap.mappoint._y>5) {
_root.smallmap.mappoint._y = _root.smallmap.mappoint._y-i;
}

};
}

Как показано на скрипте - кнопка при нажатии запускает скрипт, если _x и _y меньше заданных координат - наращивать, если больше, уменьшать.
Таких кнопок несколько и в каждой свои координаты.

Вопрос такой, какое значение задать i что бы перемещение от данной позиции _root.smallmap.mappoint до заданной координаты происходило например за 2-3 секунды с затуханием, т.е. быстро стартовало и при приближении к заданной координате сбавляло скорость до нуля?

Заранее премного благодарен.

silin
20.11.2007, 17:39
затухание с постоянной i никак не выйдет, имхо
инкремент должен быть функцией расстояния (или времени), какой это уже дело второе..
т.е. расстояние известно, количество кадров тоже, надо распределить это расстояние на эти кадры неравномерно..
см. как сделан mx.transitions.Tween, там же и функции замедления/ускорения (mx.transitions.easing)

DJ_Baton
20.11.2007, 17:59
ну так вот я к чему, смотри, у меня есть
_root.smallmap.mappoint._x
_root.smallmap.mappoint._y
это и есть начальные координаты, а конечные задаются в самой кнопке
_x=216
_y=5

кто сможет написать скрипт для затухания в моей функии ?

iNils
20.11.2007, 18:09
Я смотрю два плюса за отсуствие тегов для кода, DJ_Baton так ничему и не научили. Бан на месяц.