![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2007
Сообщений: 27
|
onMouseDown = function () { speed = 1; posX = _root._xmouse; posY = _root._ymouse; objX = _root.obj._x; objY = _root.obj._y; angle = Math.atan2(posY-objY, posX-objX); moveX = Math.cos(angle)*speed; moveY = Math.sin(angle)*speed; // LINE _root.createEmptyMovieClip("line1", 1); color = (255); _root.line1.lineStyle(1, color, 100); _root.line1.moveTo(objX, objY); _root.line1.lineTo(posX, posY); }; onEnterFrame = function () { _root.obj._x += moveX; _root.obj._y += moveY; }; |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Флеш неточно работает с нецелыми числами. Не используйте конструкции типа _coord += delta. Сделайте вычисление очередной координаты по типа _coord = src + (dest - src) * current_step / total_steps. И еще почитайте по Tween, это может упростить вашу задачу.
Последний раз редактировалось rainbowrussia; 06.02.2011 в 17:15. |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 27
|
import mx.transitions.Tween; import mx.transitions.easing.*; onMouseDown = function () { var distance:Number = Math.sqrt(((_root.obj._x-_root._xmouse)*(_root.obj._x-_root._xmouse))+((_root.obj._y-_root._ymouse)*(_root.obj._y-_root._ymouse))); var time:Number = distance/100; var TweenX = new Tween(_root.obj, "_x", None.easeNone, _root.obj._x, _root._xmouse, time, true); var TweenY = new Tween(_root.obj, "_y", None.easeNone, _root.obj._y, _root._ymouse, time, true); }; |
|
|||||
|
Модрон-ветеринар
|
Просто это доигрывают предыдущие твины.
Вы их объявляете как локальные переменные, они и живут, и накладываются. Убираем var, и "засовываем" экземпляры tween'ов прямо в obj, как свойство (в принципе без разницы куда, но так удобнее, когда объектов много и легче потом обращаться будет). Останавливаем и затираем предыдущий твин новым под тем же именем, не давая тем самым предыдущему доиграть. Вот так: import mx.transitions.Tween; import mx.transitions.easing.*; onMouseDown = function () { var distance:Number = Math.sqrt(((_root.obj._x - _root._xmouse) * (_root.obj._x - _root._xmouse)) +( (_root.obj._y - _root._ymouse) * (_root.obj._y - _root._ymouse))); var time:Number = distance/100; obj.tweenX.stop(); obj.tweenY.stop(); obj.tweenX = new Tween(_root.obj, "_x", None.easeNone, _root.obj._x, _root._xmouse, time, true); obj.tweenY = new Tween(_root.obj, "_y", None.easeNone, _root.obj._y, _root._ymouse, time, true); }; Бросайте сразу адобовский, он менее удобен и менее производителен.
__________________
Идите первым! Последний раз редактировалось mooncar; 06.02.2011 в 20:25. |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 27
|
Спасибо за инфу ,уже проверил TweenLite всё работает так как надо и проц по менее грузит !
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|