flash on 2009-12-31
♥0 |
Line 88 |
Modified 2009-12-31 23:13:16 |
MIT License
archived:2017-03-30 05:53:54
ActionScript3 source code
/**
* Copyright _wonder ( http://wonderfl.net/user/_wonder )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/xc9o
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.geom.Point;
[SWF(width="465",height="465",backgroundColor="0x000000",frameRate="30")]
public class WonderflBook extends Sprite {
private var _ball:Sprite;
private var _timeGage:Sprite;
private var _locus:Sprite;
private var _startX:Number = 0;
private var _endX:Number = stage.stageWidth;
private var _startY:Number = stage.stageHeight/2;
private var _frameCount:uint = 0;
private var _frameCountLimit:uint = 150;
private var _animationFrames:Array;
public function WonderflBook() {
init();
}
private function init():void{
_animationFrames = generate_animationFrames();
_ball = new Sprite();
_ball.graphics.lineStyle(1,0x00FFFF);
_ball.graphics.beginFill(0x00FFFF,0.2);
_ball.graphics.drawCircle(0,0,5);
_ball.graphics.endFill();
_timeGage = new Sprite();
_timeGage.graphics.beginFill(0xFFFFFF,0.5);
_timeGage.graphics.drawRect(0,0,stage.stageWidth,3);
_timeGage.graphics.endFill();
_timeGage.x = -1;
_timeGage.y = stage.stageHeight-3;
_locus = new Sprite();
_ball.filters=[new GlowFilter(0x00FFFF,1,16,16,2,2)];
addChild(_locus);
addChild(_timeGage);
addChild(_ball);
stage.addEventListener(MouseEvent.MOUSE_DOWN,startRec);
stage.addEventListener(MouseEvent.MOUSE_UP,stopRec);
updateLocus();
start();
}
private function generate_animationFrames():Array{
var tmp:Array = new Array();
var easeRatio:Number = 0.1;
var tmpX:Number = _startX;
var tmpY:Number = _startY;
for(var i:uint=0;i<_frameCountLimit;i++){
tmpX += (_endX-tmpX)*easeRatio;
tmp.push(new Point(tmpX,tmpY));
}
return tmp;
}
private function render(e:Event):void{
if(_frameCount < _frameCountLimit){
_ball.x += (_animationFrames[_frameCount].x - _ball.x)/4;
_ball.y += (_animationFrames[_frameCount].y - _ball.y)/4;
} else {
_frameCount = 0;
}
_timeGage.width = (_frameCount/_frameCountLimit)*stage.stageHeight;
_frameCount++;
}
private function start():void{addEventListener(Event.ENTER_FRAME,render);};
private function stop():void{removeEventListener(Event.ENTER_FRAME,render);};
private function startRec(e:Event):void{
addEventListener(Event.ENTER_FRAME,recMouse);
}
private function stopRec(e:Event):void{
removeEventListener(Event.ENTER_FRAME,recMouse);
}
private function recMouse(e:Event):void{
if(_frameCount < _frameCountLimit){
_animationFrames[_frameCount].x = mouseX;
_animationFrames[_frameCount].y = mouseY;
updateLocus();
}
}
private function updateLocus():void{
_locus.graphics.clear();
_locus.graphics.lineStyle(1,0xFFFFFF,0.2);
for(var i:uint=0;i<_frameCountLimit;i++){
_locus.graphics.drawCircle(_animationFrames[i].x,_animationFrames[i].y,2);
}
}
}
}