Flash / Flex / ActionScript/Animation/Acceleration
Acceleration Animation
<source lang="java">
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; } }
}
</source>
Start with a direction and magnitude for the acceleration force
<source lang="java">
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; } }
}
</source>