Siva
Siva

Reputation: 359

AS3:Move Objects in a curve path using as3 programming?

I need to move many objects in a curve path across screen randomly. The objects start path and towards path also should take randomly. I had searched on google and finally i found one usefull tutorial to draw a curve. But i don't know how to move the objects using that curve path. But i am sure there would be some formula in as3 which has to use sin and cos theta. So please let me know if anybody have a solution for my problem. And also if i got any sample projects also would be very usefull for me. And the link which i got to draw curve is as follows. http://active.tutsplus.com/tutorials/actionscript/the-math-and-actionscript-of-curves-drawing-quadratic-and-cubic-curves/?search_index=4.

Thanks in advance.Immediate Help would be appreciated. 

Upvotes: 0

Views: 3390

Answers (1)

George Profenza
George Profenza

Reputation: 51837

A quick'n'dirty would be using polar to cartesian coordinates(sin and cos) as you mentioned:

import flash.events.Event;

var a:Number = 0;//angle
var ra:Number = .01;//random angle increment
var rx:Number = 100;//random trajectory width
var ry:Number = 100;//random trajectory height


graphics.lineStyle(1);
addEventListener(Event.ENTER_FRAME,function (event:Event):void{
    a += ra;//increment angle            
    rx += a;//fidle with radii otherwise it's gonna be a circle
    ry += a;//feel free to play with these
    graphics.lineTo(225 + (Math.cos(a) * rx),//offset(225,200)
                    200 + (Math.sin(a) * ry));//and use pol to car conversion

    if(a > Math.PI) reset();//reset at 180 or any angle you like
});

function reset():void{
    trace('reset');//more values to tweak here
    a = Math.random();
    ra = Math.random() * .0001;
    rx = 20 + Math.random() * 200;
    ry = 20 + Math.random() * 200;
}

Random numbers need tweaking to get mostly rounder ellipses (rather than flatter ones), but the principle is the same.

If you don't mind using libraries, why not try TweenLite's BezierPlugin or BezierThroughPlugin. Should be easy to randomize start/end points.

Also you can check out the first part of this older answer on quadratic,cubic and hermite interpolation

In my example I'm drawing a path, but of course, you could use those computed x,y coordinates to plug into a DisplayObject to move it on screen.

Upvotes: 4

Related Questions