AS3运动学基础-正弦运动2
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.filters.GlowFilter;
/**
* ...
* @author hacker47
*/
[SWF(backgroundColor="0x000000")]
public class Main3 extends Sprite
{
private var angle:Number = 0;
private var speed:Number = .05;
private var range:Number = 200;
private var vx:Number = 2;
private var startx:Number=100;
private var starty:Number=300;
private var canvas:Sprite;
private var ball:Ball;
public function Main3():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
canvas = new Sprite();
addChild(canvas);
canvas.filters = [new BlurFilter(10, 10, 1)];
ball = new Ball();
addChild(ball);
ball.x = startx;
ball.y = starty;
// entry point
canvas.graphics.lineStyle(2,0xffffff,1,true);
canvas.graphics.moveTo(startx, starty);
addEventListener(Event.ENTER_FRAME, function running(e:Event):void {
var dx:Number = startx + vx;
var sin:Number = Math.sin(angle);
if (sin > 0) sin *= -1;
var dy:Number = starty+sin * range;
angle += speed;
canvas.graphics.lineTo(dx, dy);
canvas.filters = [new BlurFilter(5*Math.abs(sin), 5*Math.abs(sin), 1),new GlowFilter(0xff0000,Math.abs(sin),5*Math.abs(sin),5*Math.abs(sin))];
startx = dx;
if ((angle * 180 / Math.PI) > 180) {
range-= 30;
angle = 0;
trace("一个周期");
if (range < 0) {
removeEventListener(Event.ENTER_FRAME, running);
}
}
ball.x = startx;
ball.y = dy;
});
}
}
}
package
{
import flash.display.Sprite;
/**
* ...
* @author hacker47
*/
public class Ball extends Sprite
{
private var _radius:Number = 20;
public function Ball()
{
this.graphics.lineStyle(1);
this.graphics.moveTo(0, 0);
this.graphics.beginFill(0xCCCCCC);
this.graphics.drawCircle(_radius >> 1, _radius >> 1, _radius);
this.graphics.endFill();
}
}
}