Flash / Flex / ActionScript/Animation/Springs
Springs 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 _vx:Number = 20; private var _vy:Number = 0; private var _k:Number = .1; private var _damp:Number = .94; private var _targetX:Number = 200; private var _targetY:Number = 200; public function Main( ) { _sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 5); _sprite.x = 0; _sprite.y = 0; addChild(_sprite); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { var ax:Number = (_targetX - _sprite.x) * _k; var ay:Number = (_targetY - _sprite.y) * _k; _vx += ax; _vy += ay; _sprite.x += _vx; _sprite.y += _vy; _vx *= _damp; _vy *= _damp; } }
}
</source>
Using Trigonometry
<source lang="java">
package {
import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var _sprite:Sprite; private var _angle:Number = 45; private var _radius:Number = 200; public function Main( ) { _sprite = new Sprite( ); _sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 5); _sprite.graphics.endFill( ); _sprite.x = 0; _sprite.y = 100; addChild(_sprite); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { _sprite.x = 200 + Math.sin(_angle) * _radius; _angle += .05; } }
}
</source>