使用AS3实现旋线运动的动画

使用AS3实现旋线运动,其实主要的是完成极坐标与标准坐标系(笛卡尔坐标系)之间坐标的转换,很简单只需要使用Point类的静态方法polar()实现即可

代码如下(注释已经写好,不懂得看AS3文档):

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
	
	/**
	 * ...
	 * @author aisajiajiao
	 * 本例主要使用Point类的静态方法polar(len:Number, angle:Number):Point来进行动画
	 */
	
	[SWF(width="800",height="800")]
	public class Xuanxian extends Sprite
	{
		//变量名称就不说了一看就明白
		private var circle:Sprite;
		private var angle:Number = 0;
		private var radius:Number = 0;
		private var guiji:Sprite;
		
		public function Xuanxian()
		{
			//circle是红色的小球,是小球的运动更为明显
			circle = new Sprite();
			circle.graphics.beginFill(0xff0000);
			circle.graphics.drawCircle(0,0,5);
			circle.graphics.endFill();
			circle.x = stage.stageWidth/2;
			circle.y = stage.stageHeight/2;
			addChild(circle);
			
			//初始化轨迹容器,设置线条样式,首先将绘制起始点移动到影片的中央
			guiji = new Sprite();
			guiji.graphics.lineStyle(1);
			guiji.graphics.moveTo(stage.stageWidth/2,stage.stageHeight/2);
			addChild(guiji);
			
			stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
		}
		
		//动画处理函数
		private function onEnterFrame(e:Event):void
		{
			//将极坐标系转化为标准坐标系(笛卡尔坐标系),radius对应极坐标的长度,angle是弧度单位对应于角度
			//为产生动画,将radius与angle逐渐增大
			circle.x += Point.polar(radius,angle).x;
			circle.y += Point.polar(radius,angle).y;
			//设置不同的参数,会产生不同的效果
			radius += .1;
			angle += .2;
			//将从上次起始点绘制线段到圆的坐标,完后再将绘制起始点移动到上次绘制结束时的圆的中心以产生动画
			guiji.graphics.lineTo(circle.x,circle.y);
			guiji.graphics.moveTo(circle.x,circle.y);
		}
	}
}


调整radius与angle的数值会产生不同的效果。下面三张图,第一张是默认的效果,大家可以换不同的数值,产生自己喜欢的图案。

你可能感兴趣的:(flash)