Форум 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=152202)

Universe 13.03.2011 17:20

Плавное движение по точкам
 
Делаю сейчас одну игрушку в которой объект движется по заданному пути, от точки к точке. Но на большой скорости становится заметным угловатость этого движения. Как можно это исправить? Чтобы объект на любой скорости двигался плавно?

Вот код который есть пока:
Код AS3:

var speed:uint = 5;
var velX:Number;
var velY:Number;
var pointNum:uint;
var points_arr:Array = new Array();
 
fillArray();
ball_mc.addEventListener(Event.ENTER_FRAME, moveBall);
 
function fillArray():void
{
        for(var i:uint; i< this.numChildren; i++)
        {
                if(getChildAt(i).name == "point" + i)
                {
                        points_arr.push(getChildAt(i));
                }
        }
        trace(points_arr.length);
}
 
function moveBall(e:Event):void
{
        var dx = points_arr[pointNum].x - ball_mc.x;
        var dy = points_arr[pointNum].y -ball_mc.y;
        var dist = Math.sqrt(dx*dx+dy*dy);
        //var angle = Math.atan2(dy, dx);
        //movieClip1_mc._rotation = angle*180/Math.PI;
 
        if (dist>speed)
        {
                velX = dx/dist*speed;
                velY = dy/dist*speed;
                ball_mc.x += velX;
                ball_mc.y += velY;
        }
        else
        {
                if(pointNum < points_arr.length-1)
                {
                        trace("Point CHANGED");
                        pointNum++;
                }
                else
                {
                        //e.target.removeEventListener(Event.ENTER_FRAME, moveBall);
                        pointNum = 0;
                }
        }
}


Jewelz 13.03.2011 17:35

я делал через Bezier

Universe 13.03.2011 17:54

а кокой нибудь примерчик кода можно?

Jewelz 13.03.2011 18:00

не найду =)

но суть такова - по точкам строим кривую безье (я пользовался безье Дембицкого)

а дальше по ENTER_FRAME делаем приращение времени (скорость), получаем новую точку на нашей кривой, и размещаем там объект

spooner 13.03.2011 18:27

Не то?

ЗлОй ПрОграММер 13.03.2011 23:16

http://bezier.ru/

Universe 13.03.2011 23:46

а можно у них как то эту библиотеку вытянуть без настройки SVN? работаю в Flash IDE

Bgg 14.03.2011 00:09

э
http://bezier.googlecode.com/files/bezier.swc

Universe 14.03.2011 00:17

извиняюсь за нубовский вопрос, но как открыть swc? Никогда с ним не работал. Пробовал при помощи winRar, но классов внутри не обнаружил, только xml и swf

Bgg 14.03.2011 00:36

Первая страница гугла: http://www.infogroupindia.com/blog/posts/513


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

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