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