第12,13次课flash课件.ppt_第1页
第12,13次课flash课件.ppt_第2页
第12,13次课flash课件.ppt_第3页
第12,13次课flash课件.ppt_第4页
第12,13次课flash课件.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 12,13次课,响应键盘,有4种方法可以检测键盘上的按键动作。 第1种方法:使用按钮 第2种方法:使用Key对象 第3种方法:使用键盘侦听 第4种方法:使用影片剪辑的keyUp和keyDown事件处理函数。,1通过按钮检测按键动作,在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的A键时输出窗口中将提示:Aispressed。on(keyPress a) trace(a is pressed); 检测键盘上的字母键时,字母都应为小写。,如果要检测键盘中的特殊键,如方向键,Flash中有一些专门的代码来表

2、示它们, 如要检测键盘上的键,可以使用下面的ActionScript:on(keyPress ) trace(left is pressed); ,可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,可以为按钮定义快捷键,如下所示:on(release, keyPress ) _root.myMc.nextFrame(); 上面的语句实现单击按钮或按键盘上的左方向键,控制影片剪辑myMC向前1帧。,2影片剪辑的keyUp和keyDown事件 影片剪辑包含两个与键盘相关的事件keyUp和keyDown,使用它们也可以实现对按键事件的响应,如下所示:onClipEvent (k

3、eyDown) trace(Key.getAscii(); 函数Key.getAscii返回与按键相对应的ASCII码。键盘上的每个字符对应一个ASCII码,如字母A对应的ASCII码为65,B对应的ASCII码为66,a对应的ASCII码为97,b对应的ASCII码为98,+对应的ASCII码为43等。只有字符才有ASCII码,键盘上的功能键没有ASCII码。,如何在输出窗口中输出与按键相对应的字符? 使用String对象的fromCharCode函数将ASCII码转换成字符。 如将上例的trace命令改成如下所示:onClipEvent (keyDown) trace(String.fro

4、mCharCode(Key.getAscii(); String对象见动作面板的“对象”/“核心”目录下面。,3Key对象 利用按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。 Key对象包含在动作面板的“ActionScript;类”/“影片”目录下面,它由Flash内置的一系列方法、常量和函数构成。,使用Key对象可以检测某个键是否被按下,如要检测左方向键是否被按下,可以使用如下ActionScript:if(Key.isDown(Key.LEFT) trace(Theleftarrowisdown); 函数Key.isDown返回一个布尔值,

5、当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左方向键。当左方向键被按下时,该函数返回true。,Key对象中的常量代表了键盘上相应的键,Key.BACKSPACEKey.ENTERKey.PGDNKey.CAPSLOCKKey.ESCAPEKey.RIGHTKey.CONTROLKey.HOMEKey.SHIFTKey.DELETEKEYKey.INSERTKey.SPACEKey.DOWNKey.LEFTKey.TABKey.ENDKey.PGUPKey.UP,如何表示键盘上的字母键呢? Key对象提供了一个函数Key.getCode来实现

6、这一功能,如下所示: if(Key.isDown(Key.getCode(a) trace(a is pressed); ,练习:键盘控制影片剪辑可以通过键盘上的方向键控制影片剪辑运动。当敲击空格键时,瓢虫回到初始位置。,onClipEvent(load)x0=this._x;y0=this._y;onClipEvent(enterFrame)if(Key.isDown(Key.SPACE)this._x=x0;this._y=y0;this._rotation=0;if(Key.isDown(Key.LEFT)elseif(Key.isDown(Key.LEFT),this._x-=10;t

7、his._rotation=-90;elseif(Key.isDown(Key.RIGHT)this._x+=10;this._rotation=90;elseif(Key.isDown(Key.UP)this._y-=10;this._rotation=0;elseif(Key.isDown(Key.DOWN)this._y+=10;this._rotation=180;if(this._x550)this._x=0;if(this._x400)this._y=0;if(this._y0)this._y=400;,Date,日期与时间,使用Date的方法:首先要创建一个Date类实例: va

8、r now:Date = new Date(); 创建了Date实例后,就可以调用Date的方法,来获取当前时间。,getDate()方法:将返回当前的号数,返回值是1-31之间。 getDay()方法:返回当前是星期几,0-6,0代表星期日。 getFullYear()方法:返回当前年份,4位数。 getHours()方法:返回当前是几点,0-23。 getMinutes()方法:返回当前是分钟数,0-59。 getMonth()方法:返回前的月份数,0-11。请注意这里是0-11,即0代表1月。当前的月份应该是: getMonth() +1. getSeconds()方法:返回当前的秒数,

9、0-59。 getTime()方法:返回当前时间自通用时间1970年1月1日午夜以来的毫秒数。这个方法常被用来比较两个日期间的距离。比如倒计时牌。,Date类还有很多方法,将上面的方法中的get换为set即把某个时间设置给一个Date对象。 有了上面的方法后,就可以来做一个练习了,首先来做一个显示当前日期的练习:,这个练习由两个部分组成:一个是一个电子钟,一个是显示当前时间的文本牌。 1 首先是做背景,这个按你个人喜好。 2 做表盘,新建一MC,画一个正园,将正园居中对齐。用直线工具在12点位置画一条很短的直线(分钟线),用变形工具将直线的注册点调到十字处。打开变形成面板,在旋转处输入6,然后

10、点下面的旋转并复制按钮,复制59分,这样分钟线就画好了。然后用选择工具将时钟线拉长一些,将12点,3点,6点,9点标出来。这样表盘就做好了。,3 做表针,建三个MC分别画时针,分针和秒针,每个针均指向12点,针的下端与十字对齐,。 4 回到主场景,新建一层,将表盘拖到舞台上放好。 5 新建一层,将秒针,分针,时针拖入,将针底端与表盘中心对齐。画一个画色的小园(按对象绘绘制)放要针的尾部,再在黄色的园上放一个放射填充的园。 6 打开属性面板,为表针指定实例名:时针-sz_mc,分针:fz_mc,秒针:mz_mc. 7 按上面效果,在舞台下半部放7个动态文本框,实例名称分别为:年:y_txt,月:

11、m_txt,日:d_txt,星期:w_txt,时:h_txt,分:min_txt,秒:s_txt.8新建一层,命名为:action,打开帧动作面板,输入:,var xq:Array = new Array(日,一,二,三,四,五,六); function nowtime() var now:Date = new Date(); year = now.getFullYear(); mon = now.getMonth(); day = now.getDate(); week =now.getDay(); hour = now.getHours(); minu = now.getMinutes()

12、; second = now.getSeconds(); y_txt.text = year; m_txt.text = mon+1; d_txt.text = day; w_txt.text=xqweek; h_txt.text=hour; min_txt.text= minu; s_txt.text = second; if(hour12) hour=hour-12; sz_mc._rotation = hour*30+minu/2; fz_mc._rotation= minu*6+second/10; mz_mc._rotation = second*6; var nowtimeid =

13、 setInterval(nowtime,1000);,下面做第二个练习:倒计时牌 倒计时牌需要4个动态文本,实例名称为:天:tan_txt,小时:xs_txt,分钟:fz_txt,秒钟:mz_txt,function djs() var now:Date = new Date(); var yd:Date = new Date(2011,0,1); var nows = now.getTime(); var yds = yd.getTime(); var sc = yds - nows; var tan = Math.floor(sc/(1000*60*60*24); var tys = s

14、c%(1000*60*60*24); var xs = Math.floor (tys/(1000*60*60); var sys = tys%(1000*60*60); var fz = Math.floor(sys/(1000*60); var fys = sys%(1000*60); var mz = Math.floor(fys/1000); tan_txt.text = tan; xs_txt.text = xs; fz_txt.text=fz; mz_txt.text =mz; var djsid = setInterval(djs,1000);,在上面两个练习中,都用到了setI

15、nterval()函数,这是本节要介绍的第二部分内容。 setInterval():函数 该函数可实现每隔多少毫秒调用一次某函数。 用法: var 一个变量名称 = setInterval(要调用的函数名称,间隔的毫秒数); 例: var i = 0; function dy() i+; trace(i); var dyid = setInterval(dy,1000); 测试影片,每隔1秒钟,将输出1次,从1开始,每次输出增加1。 如果我们要停止setInterval()函数,不让它再调用函数,可用:clearInterval()函数。,用法:clearInterval(存储有setInte

16、rval函数的变量名称) 例将上例的代码改为: var i = 0; function dy() i+; trace(i); if (i10) clearInterval(dyid); var dyid = setInterval(dy,1000); 测试影片,当输出10次后,不再继续输出了。,setTimeout()函数: 这个函数是在隔多少毫秒后,调用某函数。与setInterval函数不同的是它只调用一次,然后自动删除,而不是反复调用。用法与setInterval函数一样。 例:将代码改为: var i = 0; function dy() i+; trace(i); var dyid

17、= setTimeout (dy,1000); 测试影片,在1秒后将输出1,然后不再输出了。 如果要阻止setTimeout调用函数可用: clearTimeout() 用法clearTimeout(存储有setTimeout函数的变量); 例:clearTimeout(dyid);,练习:万年历本例使用Date对象制作的万年历。,使用该例万年历可以翻查任何一年任何一月的日历,单击返回按钮可以查看当天所在的月份,且当天以白色显示。本例的制作过程如下:(1)在图层back加入背景图片back.jpg。(2)在图层yearmonth添加两个动态文本框,变量名为displaymonth和displa

18、yyear,分别用来显示月和年,字体为VinetaBT,颜色为黄色。(3)在图层button添加按钮,分别用来控制月份上翻查、月份下翻查、年份上翻查、年份下翻查和返回当天。(4)建立一个影片剪辑元件daynum,在其中添加一个变量名为num的动态文本框,用来显示日期,它的颜色为绿色。在库面板中为daynum元件添加链接,链接标识符也为daynum。,(5)在图层Actions的第1帧中添加如下ActionScript:MyDate=newDate();/创建Date对象以获取系统时间MyCurYear=MyDate.getFullYear();MyCurMonth=MyDate.getMont

19、h();MonthNames=newarray();/记录每个月名称的数组DaysOfMonth=newarray();/记录每个月天数的数组if(MyCurMonth=1)/如果是二月,判断是否为闰年if(MyNewYear%4=0),MonthNames0=January;MonthNames1=February;MonthNames2=March;MonthNames3=April;MonthNames4=May;MonthNames5=June;MonthNames6=July;MonthNames7=August;MonthNames8=September;MonthNames9=O

20、ctober;MonthNames10=November;MonthNames11=December;,DaysOfMonth0=31;DaysOfMonth2=31;DaysOfMonth3=30;DaysOfMonth4=31;DaysOfMonth5=30;DaysOfMonth6=31;DaysOfMonth7=31;DaysOfMonth8=30;DaysOfMonth9=31;DaysOfMonth10=30;DaysOfMonth11=31;,(6)在Actions层的第3帧插入关键帧,在其动作面板中添加如下ActionScript:stop();MyNewDate=newDat

21、e(MyCurYear,MyCurMonth,1);/根据参数创建Date对象MyNewYear=MyNewDate.getFullYear();MyNewMonth=MyNewDate.getMonth();displaymonth=MonthNamesMyNewMonth;/根据Date对象设置显示的月份displayyear=MyNewYear;/根据Date对象设置显示的年份if(MyNewMonth=1)if(MyNewYear%4=0),MyDaysOfMonth=DaysOfMonthMyNewDate.getMonth();MyDay=MyNewDate.getDay();fo

22、r(i=1;i350)/_x坐标超出星期六_rootdaynum+i._x=50;/回到星期日的位置_rootdaynum+i._y+=40;/_y坐标下移40if(_rootdaynum+i._y290)/_y坐标超出下边界_rootdaynum+i._y=130;/回到第一行显示MyNewDate=newDate();/获取系统时间colorday=MyNewDate.getDate();/获取要以白色显示的日期if(_root.displayyear=MyNewDate.getFullYear(),(7)为年份上翻查按钮的动作面板添加如下ActionScript:on(release)f

23、or(j=1;j=31;j+)removeMovieClip(daynum+j);/单击时删除显示的日期MyCurYear-;/年份变量减1gotoAndPlay(2);/回到第2帧创建新的Date对象,(8)为年份下翻查按钮的动作面板添加如下ActionScript:on(release)for(j=1;j=31;j+)removeMovieClip(daynum+j);/单击时删除显示的日期MyCurYear+;/年份变量加1gotoAndPlay(2);/回到第2帧创建新的Date对象(9)为月份上翻查按钮的动作面板添加如下ActionScript:on(release)for(j=1;

24、j=31;j+)removeMovieClip(daynum+j);/单击时删除显示的日期MyCurMonth-;/月份变量减1if(MyCurMonth=-1)MyCurMonth=11;MyCurYear-;gotoAndPlay(2);/回到第2帧创建新的Date对象,(10)为月份下翻查按钮的动作面板添加如下ActionScript:on(release)for(j=1;j=31;j+)removeMovieClip(daynum+j);/单击时删除显示的日期MyCurMonth+;/月份变量加1if(MyCurMonth=12)MyCurMonth=0;MyCurYear+;goto

25、AndPlay(2);/回到第2帧创建新的Date对象(11)为返回按钮的动作面板添加如下ActionScript:on(release)for(j=1;j=31;j+)removeMovieClip(daynum+j);/单击时删除显示的日期gotoAndPlay(1);/回到第1帧获取系统时间,AS绘图,AS2.0这我们提供了一些绘图方法,利用这些方法,可以绘制一些图形。 1) lineStyle() 方法:该方法确定线条的类型。常用格式:MC.lineStyle(粗细,颜色,透明度)。 比如:my_mc. lineStyle(1,0 xff0000,100) 这就指明了线条粗细为1,颜色

26、是红色,透明度为100%。 2) moveTo()方法:该方法将画笔移到起画点上。 用法:MC.moveTo(x,y); 3)lineTo()方法: 该方法将从起画点到终点画一条直线,并将起画点移到终点。 用法:MC.lineTo(x,y),this.lineStyle(1,0 xff0000,100); this.moveTo(0,0); this.lineTo(200,200);测试影片,上面的代码画了一条从(0,0)到(200,200)的红色直线。 下面扩展一下,画个三角形: this.lineStyle(1,0 xff0000,100); this.moveTo(200,200); t

27、his.lineTo(300,200); this.lineTo(250,300); this.lineTo(200,200);,4)beginFill()方法:开始填充。 用法:MC.beginFill(颜色,透明度) 5)endFill()方法:用beginFill()中的颜色填充图形。 比如将上面的三角形填上蓝色: 如果想要无笔触的三角形,那么上面第一句不要就行了。,this.lineStyle(1,0 xff0000,100); this.beginFill(0 x0000ff,100); this.moveTo(200,200); this.lineTo(300,200); this

28、.lineTo(250,300); this.lineTo(200,200); ebdFill(); 测试影片,会看到一个红色笔触蓝色填充的三角形。,例子:绘制五角星 将下列代码输入到帧动作面板中:,this.createEmptyMovieClip(wx_mc,this.getNextHighestDepth(); wx_mc._x = Stage.width/2; wx_mc._y = Stage.height/2; wx_mc.beginFill(0 xFF0000,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(2

29、5,-30); wx_mc.lineTo(0,0); wx_mc.endFill(); wx_mc.beginFill(0 xee0202,100); wx_mc.moveTo(0,0); wx_mc.lineTo(0,-100); wx_mc.lineTo(-25,-30); wx_mc.lineTo(0,0); wx_mc.endFill();,for(i=0;i5;i+) wx_mc.duplicateMovieClip(wx1+i,this.getNextHighestDepth(); wx1 = eval(wx1+i); wx1._rotation = i*72; this.crea

30、teEmptyMovieClip(xg_mc,this.getNextHighestDepth(); xg_mc._x = Stage.width/2; xg_mc._y= Stage.height/2; xg_mc.lineStyle(1,0 xeed600,100); xg_mc.moveTo(0,-120); xg_mc.lineTo(0,-140); xg_mc.moveTo(10,-160); xg_mc.lineTo(10,-180); for(j=0;j37;j+) xg_mc.duplicateMovieClip(xg+j,this.getNextHighestDepth();

31、 xg1_mc = eval(xg+j); xg1_mc._rotation = j*10; ,6)curveTo() 方法:该方法画一条由起画点经控制点到终点的一条曲线。 用法:MC. curveTo(控制点x,控制点y,终点x,终点y);,代码: this.createEmptyMovieClip(mh_mc,this.getNextHighestDepth(); mh_mc._x = Stage.width /2; mh_mc._y = Stage.height/2; mh_mc.beginFill(0 xff0000,100); mh_mc.moveTo(0,0); mh_mc.cur

32、veTo(-20,-25,-10,-45); mh_mc.curveTo(0,-60,10,-45); mh_mc.curveTo(20,-25,0,0); mh_mc.endFill(); for(i=0;i5;i+) mh_mc.duplicateMovieClip(mh+i,this.getNextHighestDepth(); mh1_mc = eval(mh+i); mh1_mc._rotation= i*72; ,7)beginGradientFill()方法:该方法可实现渐变填充。 参数: fillType: 线性渐变用linear,放射渐变用radial。 colors: 用于

33、渐变色的 RGB 十六进制颜色值的数组;例如,红色为 0 xFF0000,蓝色为 0 x0000FF。可以至多指定 15 种颜色。对于每种颜色,确保在 alphas 和 ratios 参数中指定对应值。 alphas: colors 数组中对应颜色的 Alpha 值数组;有效值为 0 到 100。如果值小于 0,则 Flash 使用 0。如果值大于 100,则 Flash 使用 100。 ratios: 颜色分布比例数组;有效值为 0 到 255。即渐变中每种颜色的比例值,可以理解为颜色面板中,渐变色的滑块的位置。比如在colors参数为:0 xFF0000,0 x0000FF,本参数为:25

34、0,255,,matrix: 一个转换矩阵: flash.geom.Matrix 类包括 createGradientBox() 方法,通过该方法可以方便地设置矩阵,以便用于 MovieClip 类的 beginGradientFill() 方法。 用法:首先需要导入flash.geom.Matrix类 import flash.geom.* 然后,创建一个flash.geom.Matrix类的实例,再调用createGradientBox方法: matrix = new Matrix(); matrix.createGradientBox(渐变范围的宽,渐变范围的高,旋转, x轴方向的偏移量

35、,y轴方向的偏移量);,x轴方向的偏移量:一般为要填充的形状的x减去渐变范围的宽。 y轴方向的偏移量:一般为要填充的形状的y减去渐变范围的高。 根据形状可调。 focalPointRatio: 可选 在 Flash Player 8 中添加。一个数字,控制渐变焦点的位置。值 0 表示焦点位于中心。值 1 表示焦点位于渐变圆的一条边界上。值 -1 表示焦点位于渐变圆的另一条边界上。小于 -1 或大于 1 的值将被舍入为 -1 或 1。,代码: import flash.geom.*; import flash.geom.*; this.createEmptyMovieClip(mh_mc,thi

36、s.getNextHighestDepth(); mh_mc._x = Stage.width /2; mh_mc._y = Stage.height/2; var color:Array = 0 xFF0000,0 xfee7f8; var alph:Array= 100,100; var rotio:Array = 0,255; var matrix = new Matrix(); matrix.createGradientBox(40,100,Math.PI,-20,-40);/这里要填充的形状注册点是(0,0)这样就算出了-20,和-40(调整后的) mh_mc.beginGradie

37、ntFill(radial,color,alph,rotio,matrix); mh_mc.moveTo(0,0); mh_mc.curveTo(-20,-25,-10,-45); mh_mc.curveTo(0,-60,10,-45); mh_mc.curveTo(20,-25,0,0); mh_mc.endFill(); for(i=0;i5;i+) mh_mc.duplicateMovieClip(mh+i,this.getNextHighestDepth(); mh1_mc = eval(mh+i); mh1_mc._rotation= i*72; this.createEmptyMo

38、vieClip(hz_mc,0); hz_mc._x =Stage.width/2; hz_mc._y = Stage.height/2; hz_mc.lineStyle(6,663333,100); hz_mc.moveTo(0,0); hz_mc.curveTo(-5,110,0,160); this.createEmptyMovieClip(hy_mc,this.getNextHighestDepth(); hy_mc._x =Stage.width/2; hy_mc._y = Stage.height/2; color = 0 x0e730d,0 x06db2b; matrix.cre

39、ateGradientBox(60,20,Math.PI,10,50); hy_mc.beginGradientFill(radial,color,alph,rotio,matrix); hy_mc.moveTo(0,70); hy_mc.curveTo(35,40,70,50); hy_mc.curveTo(35,90,0,70); hy_mc.endFill(); hy_mc.duplicateMovieClip(hy1_mc,this.getNextHighestDepth(); hy1_mc._xscale = -100; hy1_mc._x =hy_mc._x -6; hy1_mc.

40、_y =hy_mc._y +10,Math对象,作为一门编程语言,进行数学计算是必不可少的。ActionScript将所有这些与数学有关的方法、常数、三角函数以及随机数都集中到一个对象里面Math对象。Math对象是ActionScript的一块敲门砖,只有掌握了它,才能真正对ActionScript动画编程做到运用自如,Math对象的方法,1Math.absMath对象中集合了许多常用数学函数。Math.abs就是用来计算一个数的绝对值,即一个数去掉正负符号后的值。其用法如下:x=Math.abs(-9);或:x=Math.abs(num1-num2);,2Math.roundMath.ro

41、und方法将一个浮点数四舍五入为最接近的整数,如:trace(Math.round(9.4);trace(Math.round(9.5);trace(Math.round(-9.4);trace(Math.round(-9.5);trace(Math.round(-9.6);输出窗口中将显示:9、10、-9、-9、-10,3Math.ceil、Math.floorMath.ceil方法取比一个浮点数大且最接近的整数,Math.floor方法取比一个浮点数小且最接近的整数。如:trace(Math.ceil(9.1);trace(Math.floor(9.1);trace(Math.ceil(-

42、9.1);trace(Math.floor(-9.1);输出窗口中将显示:10、9、-9、-10,4Math.min、Math.maxMath.min方法取两个数中较小的一个数,Math.max方法取两个数中较大的一个数,如:trace(Math.min(9,8);trace(Math.max(9,8);输出窗口中显示:8、9,5Math.powMath.pow方法用来计算一个数的乘方,它包含两个参数,第1个参数是底数(要乘方的数),第2个参数是幂(乘方数)。如计算5的3次方:trace(Math.pow(5,3);输出窗口中显示:125Math.pow方法也可以计算一个数的开方,如计算125

43、的开3次方:trace(Math.pow(125,1/3);输出窗口中显示5,6Math.sqrtMath.sqrt计算一个数的平方根,如计算64的平方根:trace(Math.sqrt(64);输出窗口中显示8它等同于:trace(Math.pow(64,1/2);,2Math对象的常数Math对象的常数有以下几个:=Math.PI:圆周率(大约为3.141593)。=Math.SQRT1_2:1/2的平方根的倒数(大约为0.707107)。=Math.SQRT2:2的平方根(大约为1.414214)。=Math.E:欧拉(Euler)常数,自然对数的底(大约为2.718282)。=Math

44、.LN2:2的自然对数(大约为0.693147)。=Math.LN10:10的自然对数(大约为2.302585)。=Math.LOG2E:e的以2为底的对数(大约为1.442695)。=Math.LOG10E:e的以10为底的对数(大约为0.434294)。其中Math.PI用得较多,如下面的脚本将弧度值arcdegree转换为角度值angledegree:angledegree=arcdegree*(180/Math.PI); 下面的ActionScript将弧度1转换为角度:arcdegree=1;angledegree=arcdegree*(180/Math.PI);trace(angl

45、edegree);输出窗口中显示:57.2957795130823,4字符串和数字的转换 在ActionScript中,字符串和数字之间可以相互转换。 例如,在Flash中有一个变量名为n的输入文本框和一个按钮,按钮中的ActionScript如下:on(release) trace(n.text+7); 当在输入文本框中输入11,再单击按钮时,输出窗口将显示字符串“11”与字符串“7”相加的结果117,而不是数字11与数字7相加的结果8。这是因为从输入文本框中获得的是字符串,当表达式中有字符串和数字时,ActionScript优先考虑字符串,将数字转换为字符串后再进行字符串运算。,为了将字符

46、串转换成数字,可以使用ActionScript提供的函数Number,如将上例所示的脚本改写成如下所示:on(release)trace(Number(n.text)+7);当在输入文本框中输入11,再单击按钮时,输出窗口将显示结果18。 如果Number函数中的参数不能转换成数字,则返回结果NaN。,函数parseInt可以将字符串转换成整数 函数parseFloat可以将字符串转换为浮点数。 如将上例所示的脚本改写成如下所示:on(release) trace(parseInt(n.text)+7); trace(parseFloat(n.text)+7); 当在输入文本框中输入11.99

47、,再单击按钮时,输出窗口中将显示18和18.99。,parseInt和parseFloat在处理字符串时比Number函数更专业一点,它们可以从字符串中取出能转换成数字的最长字符串进行转换,而忽略后面不能转换成数字的字符串。如将上例的脚本改写成如下所示:on(release)trace(Number(n)+7);trace(parseInt(n)+7);trace(parseFloat(n)+7);当在输入文本框中输入11t7.9并单击按钮时,输出窗口中将显示NaN、18、18parseInt函数可以有两个参数,第2个参数在236之间,表示要转换的数字的基数,即进制数。如将二进制数1101转换

48、为十进制整数:trace(parseInt(1101,2);输出窗口中显示13。,toString:将数字转换成字符串.使用toString方法需要先创建一个Number对象,其用法如下:myNumber=newNumber(15);trace(myNumber.toString(2);trace(myNumber.toString(16);toString中的参数与parseInt函数的第2个参数一样,都表示进制数。本例中的2和16分别表示将myNumber转换为二进制数和16进制数。运行脚本,输出窗口中显示1111f,随机数Math.random(),该方法返回一个大于或等于0并且小于1的随机浮点数。Math.random方法比random函数得到的结果更精确,但它并不能直接产生一个整数。可以使用别的办法将Math.random方法产生的随机数转换为我们需要的整数,如要得到一个110之间的随机整数,可以使用如下所示的ActionScript:trace(Math.floor(Math.random()*10+1);,三角函数,Math类为我们提供了很多数学计算函数,三角函数是研究三角形的边与角的关系的学科。,1)园周运动。x= d*Math.cos(e) y=d*Math.sin(e) 例子:实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论