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);
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值