Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   перетаскивание объекта по траектории (http://www.flasher.ru/forum/showthread.php?t=196138)

салямчик 19.03.2013 21:57

перетаскивание объекта по траектории
 
Доброго времени суток. я пишу приложение под ios на FlashBuilder'е. столкнулся с проблемой. дан спрайт который нужно перетаскивать по траектории (в моем случае это буква). программно перетаскивание по точкам я реализовал и тут возникла проблема. при слишком резком перетаскивание спрайт перескакивает следующую точку и не меняет направления. как можно это отследить?

Hauts 19.03.2013 21:59

салямчик, очевидно же, что это зависит от вашей реализации, которой как-то не наблюдается в сообщении.

салямчик 19.03.2013 22:09

Код AS3:

private function moveCar(e:MouseEvent):void
                {
                        if (isDown == false) return;
 
                        if ((car.x >= _pointers[i].x - 1 && car.x <= _pointers[i].x + 1) || (car.y >= _pointers[i].y - 1 && car.y <= _pointers[i].y + 1))
                        {                               
                                i++;
                        }
 
                        dx = _pointers[i].x - _pointers[i -1].x;
                        dy = _pointers[i].y - _pointers[i -1].y;
 
                        radians = Math.atan2(dy, dx);
 
                        rotatePlayer();
 
                        var k:Number = dy/dx;
//                        trace (k);
 
                        var mX:Number = stage.mouseX;
                        var mY:Number = stage.mouseY;
 
                        var b:Number = findB (k, car.x, car.y);
//                        trace (b);
 
                        var XX:Number = findX (b, k);
                        var YY:Number = findY (b, k, XX);
 
                        car.x = XX;
                        car.y = YY;
 
                        trace (car.x);
                        trace (car.y);
                        trace ('============');
 
 
 
                }
 
private function rotatePlayer():void
                {
                        var degrees:Number = radians * 180/Math.PI +90;
                        car.rotation = degrees;
                }               
 
                public function findB(k1:Number,px1:Number,py1:Number):Number
                { 
                        return py1-k1*px1;
                }
 
                public function findX(b1:Number,k1:Number):Number
                {
                        return ((stage.mouseY+(1/k1)*stage.mouseX)-b1)/(k1+1/k1);
                }
 
                public function findY(b1:Number,k1:Number,x:Number):Number
                {
                        return k1*x+b1;
                }



Часовой пояс GMT +4, время: 09:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.