Flash / Flex / ActionScript/Animation/Acceleration
Acceleration Animation
package {
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite {
private var _sprite:Sprite = new Sprite( );
private var _ax:Number = .2;
private var _ay:Number = .1;
private var _vx:Number = 0;
private var _vy:Number = 0;
public function Main( ) {
_sprite.graphics.beginFill(0x0000ff, 100);
_sprite.graphics.drawCircle(0, 0, 25);
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void {
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
Start with a direction and magnitude for the acceleration force
package {
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite {
private var _sprite:Sprite = new Sprite( );
private var _ax:Number = .2;
private var _ay:Number = .1;
private var _vx:Number = 0;
private var _vy:Number = 0;
var angle:Number = 45;
var accel:Number = .5;
public function Main( ) {
_sprite.graphics.beginFill(0x0000ff, 100);
_sprite.graphics.drawCircle(0, 0, 25);
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void {
var radians:Number = angle * Math.PI / 180;
_ax = Math.cos(radians) * accel;
_ay = Math.sin(radians) * accel;
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}