ActionScript 正弦函数图像绘制

package 
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.events.Event;

	public class Main extends Sprite
	{

		var w:Number = stage.stageWidth;//舞台宽度550
		var h:Number = stage.stageHeight;//舞台高度400
		var array1:Array = ["X","Y","1","0","-1"];
		var array2:Array = [1,2,3,4];
		var mAngle:Number = 0;//正弦角度
		var mX:Number = 0;//正弦X轴坐标
		public function Main()
		{
			InitStage();
		}
		//初始化舞台
		private function InitStage()
		{
			var sp:Sprite=new Sprite();
			sp.x = 0;
			sp.y = 0;
			stage.addChild(sp);
			//相当于省略每句的sp
			with (sp)
			{
				graphics.lineStyle(2,0x000000);
				//绘制X、Y轴直线;
				graphics.moveTo(40,h/2);
				graphics.lineTo(w-80,h/2);
				graphics.moveTo(40,40);
				graphics.lineTo(40,h-40);
				//绘制X、Y轴箭头;
				graphics.beginFill(0x000000);
				graphics.drawTriangles(Vector.<Number>([w-80,h/2-10,w-60,h/2,w-80,h/2+10]));
				graphics.drawTriangles(Vector.<Number>([30,40,50,40,40,20]));
				graphics.endFill();
			}
			//添加文字X、Y、1、0、-1;
			for (var i:Number=0; i<array1.length; i++)
			{
				var txt:TextField=new TextField();
				txt.defaultTextFormat = new TextFormat("Times New Roman",20,0x000000,true,true);
				txt.autoSize = TextFieldAutoSize.CENTER;
				txt.text = array1[i];
				switch (array1[i])
				{
					case "X" :
						txt.x = w - 60;
						txt.y = h / 2;
						break;
					case "Y" :
						txt.x = 40;
						txt.y = 10;
						break;
					case "1" :
						txt.x = 40;
						txt.y = h / 2 - 90;
						break;
					case "0" :
						txt.x = 40;
						txt.y = h / 2;
						break;
					case "-1" :
						txt.x = 40;
						txt.y = h / 2 + 90;
						break;
					default :
						break;
				}
				stage.addChild(txt);
			}
			//添加X轴上的1,2,3,4
			for (var j:Number=0; j<array2.length; j++)
			{
				var txt2:TextField=new TextField();
				txt2.defaultTextFormat = new TextFormat("Times New Roman",20,0x000000,true,true);
				txt2.autoSize = TextFieldAutoSize.CENTER;
				txt2.x = 40 + (j + 1) * 90;
				txt2.y = h / 2;
				txt2.text = array2[j];
				stage.addChild(txt2);
			}
			//添加正弦线
			var line1:Sprite=new Sprite();
			line1.graphics.lineStyle(2,0x000000);
			line1.graphics.moveTo(40,h/2);
			line1.addEventListener(Event.ENTER_FRAME,drawSin);
			stage.addChild(line1);
		}
		//绘制正弦线
		private function drawSin(e:Event):void
		{
			var line1:Sprite = e.target as Sprite;
			//1帧增加6度获取Y轴坐标
			mAngle +=  6;
			var mRadian:Number=mAngle*(Math.PI/180);
			var mY = -90 * Math.sin(mRadian);
			//1帧增加6像素获取X轴坐标
			mX +=  6;
			line1.graphics.lineTo(40+mX,h/2+mY);
			//当正弦的横坐标跑到360px后停止
			if (mX==360)
			{
				line1.removeEventListener(Event.ENTER_FRAME, drawSin);
			}
		}
	}
}

你可能感兴趣的:(actionscript,正弦)