1、ActionScript编程 实战项目无忧数学课件ActionScript编程 实战项目:无忧数学课件数学方法在Flash动画及脚本中有很重要的用途。例如,执行各种解析几何的运算,以及通过方程的解集绘制各种图形。尤其是数学中的三角函数,是绘制各种多边形、圆形所必备的方法。本节将通过对Math类的应用,制作一个数学课间,如图9-5所示。图9-5 数学课件计算角度制作过程:(1)导入课件的背景素材,分别将标题栏命名为Banner,背景图像命名为BackgroundImage,并将其为ActionScript导出,如图9-6所示。图9-6 导入素材并为ActionScript导出(2)导入绘制坐标轴
2、的区域图像,将其命名为Field,并将其为ActionScript导出,如图9-7所示。图9-7 导入坐标区域并为ActionScript导出(3)保存影片,从【组件】面板中依次将Button组件、Label组件以及TextArea组件拖拽到【库】面板中,如图9-8所示。图9-8 导入组件(4)在影片所在的目录创建classes目录,并在目录中创建ControlAxes.as文件。在【属性】检查器中设置影片的文档类为classes.ControlAxes,然后即可在AS文件中创建包,导入外部类,如下所示。package classes import flash.display.Sprite;
3、import flash.display.BitmapData; import flash.display.Bitmap; import flash.display.MovieClip; import flash.geom.Point; import flash.events.MouseEvent; import fl.controls.Button; import fl.controls.TextArea; import fl.controls.Label; import flash.utils.setInterval;(5)创建名为ControlAxes的自定义类,作为影片的主类,并在主类
4、中实例化影片使用的各种对象,如下所示。private var banner:Bitmap=new Bitmap(new Banner(550,35);/实例化影片的标题栏private var backgroundImage:Bitmap=new Bitmap(new BackgroundImage(550,400);/实例化影片的背景private var field:Bitmap=new Bitmap(new Field(312,312);/实例化坐标轴区域private var axesMC:MovieClip=new MovieClip();/实例化坐标轴所在的影片剪辑private
5、var axesSprite:Sprite=new Sprite();/实例化坐标轴所在的图像单元private var axesPoint:Point=new Point();/实例化用户选择的坐标点private var distanceLine:Sprite=new Sprite();/实例化坐标点到坐标原点的距离private var pointCircle:Sprite=new Sprite();/实例化坐标点的红色标志private var axesBtn:Button=new Button();private var distanceBtn:Button=new Button()
6、;private var drawLineBtn:Button=new Button();private var angleBtn:Button=new Button();/实例化用户选择的按钮组件private var outputBox:TextArea=new TextArea();/实例化输出信息的文本域private var currentRotation:Number;private var xAxeLabel:Label=new Label();private var yAxeLabel:Label=new Label();private var tipLine:Sprite=n
7、ew Sprite();/实例化参考线的图像单元(6)自定义createUserInterface()函数,用于创建影片的标题栏、背景等图像,如下所示。private function createUserInterface ():void with (backgroundImage) /定义背景图像的属性 x=0; y=0; with (banner) /定义标题栏的属性 x=0; y=0; with (stage) addChild (backgroundImage); addChild (banner); /分别将两个图像添加到舞台中 (7)自定义createAxes()函数,在函数中制
8、作坐标轴区域的影片剪辑,并绘制坐标轴,如下所示。private function createAxes ():void with (field) /定义坐标轴区域的背景 x=-155; y=-155; with (axesMC) /定义坐标轴区域的影片剪辑 addChild (field); x=196; y=216; addEventListener (MouseEvent.CLICK,createPoint); addEventListener (MouseEvent.MOUSE_OVER,createToolTips); addEventListener (MouseEvent.MOUS
9、E_OUT,removeToolTips); addChild (axesSprite); addChild (distanceLine); addChild (xAxeLabel); addChild (yAxeLabel); addChild (tipLine); with (axesSprite.graphics) /绘制坐标轴 lineStyle (1,0x000000,1); moveTo (0,-155); lineTo (0,155); moveTo (-155,0); lineTo (155,0); moveTo (150,-3.5); lineTo (155,0.5); mo
10、veTo (150,3.5); lineTo (155,0.5); moveTo (-3.5,-150); lineTo (0.5,-155); moveTo (3.5,-150); lineTo (0.5,-155); with (xAxeLabel) /x轴的标签文本 move (125,-1); text=x轴; with (yAxeLabel) /y轴的标签文本 move (-20,-156); text=y轴; setInterval (toolTipsValue,100); /调用计时函数,绘制辅助线 tipLine.visible=false; /隐藏辅助线 stage.addC
11、hild (axesMC); /将坐标轴区域的影片剪辑添加到舞台中(8)自定义createPoint()函数,在用户单击坐标轴区域时,绘制一个半径为2px的红色圆点,标记用户单击的位置,如下所示。private function createPoint (event:MouseEvent=null):void with (axesPoint) /获取用户单击的点坐标 x=mouseX-axesMC.x; y=mouseY-axesMC.y; if (Math.abs(mouseX-axesMC.x)=150&Math.abs(mouseY-axesMC.y)=0&axesPoint.y0) /
12、判断当坐标在第4象限 currentRotation=Math.atan(- axesPoint.y/axesPoint.x)*180/Math.PI; /求点到原点间的直线斜率 else if (axesPoint.x0) /判断当点第1、2象限 currentRotation=180+Math.atan(- axesPoint.y/axesPoint.x)*180/Math.PI; /求点到原点间的直线斜率 else /判断当点在第3象限 currentRotation=360+Math.atan(- axesPoint.y/axesPoint.x)*180/Math.PI; /求点到原点
13、间的直线斜率 (9)自定义createComponents()函数,创建课件所使用的各种组件,设置其属性,如下所示。private function createComponents ():void with (axesBtn) /定义显示点坐标的按钮属性 move (380,60); setSize (150,25); label=点的坐标; addEventListener (MouseEvent.CLICK,outputText); with (distanceBtn) /定义求点到原点距离的按钮属性 move (380,90); setSize (150,25); label=到原点的
14、距离; addEventListener (MouseEvent.CLICK,outputText); with (drawLineBtn) /定义绘制点到原点连接线的按钮属性 move (380,120); setSize (150,25); label=绘制连接线; addEventListener (MouseEvent.CLICK,outputText); with (angleBtn) /定义求连接线与x轴夹角的按钮属性 move (380,150); setSize (150,25); label=与x轴夹角; addEventListener (MouseEvent.CLICK,outputText); with (outputBox) /定义输出结果的文本域属性 move (380,180);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1