版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,Flash ActionScript2.0重庆师范大学计算机与信息学院2008级计算机专业教案,戴政国讲授,2,交作业注意事项,交作业的信箱: 最迟交作业时间:周六晚上24点正。 交作业时不能打包,要按作业顺序通过信箱传递。 大作业在教室里直接交给老师。 同学们的信箱请设置好昵称和签名。,3,一、形状图形对象的基本编程方法,在windows下编写程序时几乎都采用了面向对象的编程方式,那么对象名称不能缺少,否则对象的属性无法在代码中修改。 在FLASH中对象名称也叫实例名称。在对FLASH对象编程时,首先我们要对舞台上的对象取实例名称,有了对象的实例名称以后我们才能对舞台上的对象进行编程。
2、1、形状对象没有实例名称,不能直接用于编程。,4,所有几何图形都是形状对象,在FLASH属性框里都没有实例名称,没有实例名称的对象就无法在代码中对其进行编程。所以,只好把形状对象转换成影片剪辑或者按钮以后才能对其进行编程。形状对象转换成影片剪辑以后仍然只有一帧画面,虽然对象性质变成了影片剪辑,但在转换成影片剪辑以后其效果并没有变。同样当形状对象转换成按钮以后其效果仍然一样。 例1:在图层一的第1关键帧画一个矩形,如下图所示。在属性框里无法设置实例名称,所以形状对象不能直接用于编程。,5,在属性框里可以设置矩形的高、宽、边框颜色、填充颜色、边框线宽度、边框线型等,还可以设置动作代码,可惜无效,如
3、下图所示。,6,7,2、形状对象可以转换成影片剪辑或者按钮以后用于面向对象的编程。 方法: (1)选定形状对象。 (2)执行:修改/转换为元件 或者按F8键。 弹出转换为元件对话框,选择影片剪辑或者按钮类型后取元件名称,元件名不能乱取,有一定的规范要求,如下图所示:,8,cfx表示“长方形”,应用时要区分大小写,只是对象名称,相当于冠名,即标题名caption。但不是实例名称。编写程序时要用实例名称,不用对象冠名。实例名称相当于VB编程中的name. _mc表示是影片剪辑对象,是名称的后缀词,这是固定搭配,也是对象的类型名,表示了对象是影片剪辑类型。 cfx_mc表示“长方形影片剪辑”对象。
4、如果此长方形形状对象转换成“按钮”时,对象名称最好取名为:cfx_btn _btn表示按钮对象。 为什么在对象主名后要添加类型名呢? 这样做的好处在于,在编写程序时系统才会弹出类型属性提示框,在编程时很方便。如果我们给对象取名时不在后面加类型名,那么在编写程序时没有属性框提示,很不方便。,9,实作一、给形状对象编写程序,文件名:学号姓名08计算机AS实作1.FLA 例如:20080513730唐小静08计算机AS实作1.fla (一)编程目标:改变长方形形状对象的宽和高,还可以改变长方形的位置。 (二)步骤: 1、在图层1上的第1关 键帧上直接画一个长方 形,如右图所示。 填充颜色为红色。 边
5、框线颜色为蓝色。,10,2、选定长方形,按CTRL+F3键,弹出长方形属性框。在属性框里找不到对象的实例名称,但可以设置填充颜色和边框颜色,包括边框线型和宽度等。 3、在选定长方形的状态下,执行修改/转换为元件命令,直接转换为影片剪辑,在转换对话框里取名为cfx_mc。这样在图库中此长方形的影片剪辑名称为cfx_mc,但在属性框里仍然没有实例名称,如下图所示。 4、在空白的框里录入对象实例名称,这儿我们仍然录入cfx_mc,可以与标题名不相同。在图库中对象显示的是标题名。,11,这是影片剪辑名称,它相当于对象的标题名,即冠名caption。,没有实例名称,它才是编程中的对象名name。,12,
6、录入了实例名称 可以与标题名不同,13,5、编写程序。选定图层1上的第1关键帧,按F9键,弹出代码窗口,录入以下代码: this.cfx_mc._height=cfx_mc._height*1.5; this.cfx_mc._width=cfx_mc._width*1.5; 代码的意思是要把长方形放大50%。 在代码中使用对象时要用到对象的路径。this是相对路径的起点,以本例为例,this就是舞台或者主时间轴。在此例中把this改成_root也行,则变成了绝对路径。当然在_root下的对象可以直接引用,不使用_root和this也行。,14,代码录入完成以后代码窗口图形如下图所示。 其实代码
7、还可以写成以下两种类型: _root.cfx_mc._height=cfx_mc._height*1.5; _root.cfx_mc._width=cfx_mc._width*1.5; /*只能用一组代码 cfx_mc._height=cfx_mc._height*1.5; cfx_mc._width=cfx_mc._width*1.5; 6、运行,看结果。 命令:CTRL+ENTER 注:代码的运行结果只有在播放器里才能看到。,15,16,运行的结果,确实长方形放大到了1.5倍。,17,7、如果要改变长方形的位置,可以用以下代码: cfx_mc._y=数值 cfx_mc._x=数值 在FLA
8、SH中长方形的位置定义如下,与VB和VPF编程系统所定义的方式不同:,播放器窗口,18,视图/标尺,19,如果想长方形放在播放器的左上角,可以用以下代码: cfx_mc._y =cfx_mc._height/2; cfx_mc._x =cfx_mc._width/2; CTRL+ENTER,看效果。 还可以把代码改写一下进一步观察效果: cfx_mc._y =cfx_mc._height/2+20; cfx_mc._x =cfx_mc._width/2+20;,20,代码为 cfx_mc._y =cfx_mc._height/2; cfx_mc._x =cfx_mc._width/2; 的效果
9、,代码为 cfx_mc._y=cfx_mc._height/2+20; cfx_mc._x=cfx_mc._width/2+20; 的效果,AS实作1.FLA的最后结果,21,AS实作2、把长方形形状对象转换成按钮以后把AS实作1的内容再做一次AS实作3、把椭圆形状对象转换成影片剪辑以后把实作1的内容再做一次。AS实作4、把五角星形状对象转换成影片剪辑以后把实作1内容再做一次。AS实作5、用铅笔画一个任意对象,再把实作1的内容做一次(对象可转换成影片剪辑,也可转换成按钮,自己决定)。注意文件名的写法: 20080513730唐小静08计算机实作2.fla,22,二、文本对象的属性和编程基础,1
10、、文本框的类型:从文本框属性框上看出,文本框对象有三种类型: 静态文本:不用作编写程序,没有实例名称。 动态文本:可以用作编写程序,主要用于输出文字,但不能录入文字,有实例名称。 输入文本:可以用来编写程序,主要用于输入文字,也可以显示输出文字,有实例名称。,23,2、文本框对象的XY属性是文本框左上角坐标,如下图所示。,24,3、静态文本的属性框,如上图所示,没有实例名称,不能对其编写程序。字符的垂直排列的两种方式只有在静态文本框中才有效。 4、动态文本的属性框,如下图所示。,25,5、输入文本属性框如下图所示。在播放器里单击输入文本框可以显示光标,可以在光标处录入文字。而动态文本框没有光标
11、,不能录入文字,只能显示输出文字。输入文本框也可以输出显示文字。,选择密码以后录入的字符为*号,设置字符串变量名。此变量里的字符串将在文本框里显示出来, 在编写程序时会用到。,6、文本对象的后缀名最好用_txt 例如:jsj_txt,a_txt,b_txt等。,26,(一)编程目标:在A文本框里输入文字,然后单击传送按钮把文字传输到B文本框里显示出来。 (二)步骤: 1、在图层1上画A文本框对象,要选择输入文本,取名为a_txt,变量名为a,文字录入方式为多行,字体字号字颜色在属性框里自由设置,适当即可。 2、在图层2上(在图层1上做也行)画B文本框对象,取名为b_txt,可选择为输入文本或者
12、动态文本,变量名为b,字体字号字颜色在属性框里自由设置,适中即可。 3、在图层3上添加一个按钮,取名为cs_btn。 (在图层1上做也行) 4、编写代码。 5、再把A文本框里设置成密码方式,看B文本框里输出显示结果。,AS实作6、文本对象的编程,27,中文默认为字体,28,29,30,在按钮属性框里可以直接选定此标签编写代码,31,CTRL+回车,在播放器上可以测试程序。,文件名: 20080513730唐小静08计算机实作6.fla,32,把A文本对象的字体改成黑体,字颜色仍然为红色。 把B文本对象的字体改成楷体,字颜色改成蓝色。 在播放器里调试结果为:A文本框里的字颜色和字体都传给了B文本
13、框,效果如下:,33,说明通过变量a传值给变量b时,A文本对象中的字符格式都传给了过来。 能否在代码中让b文本对象中的文字以自己的字体、字号和字颜色显示呢? 当然可以。可以直接使用text属性传值到B文本对象中。这样只传文本,不传文本格式,效果如下图所示:,34,当然,文本对象的字符颜色也可以用属性textcolor设置。例如要把B文本对象中的字符颜色设置成蓝色,可以用以下代码设置: b_txt.textcolor=0 x0000FF 注:textcolor属性用十六进制表示,0 x表示十六进制数,而用红绿蓝三种颜色的数字来表示,红绿蓝三种颜色都用2位十六进制数来表示,刚好是一个字节的长度,表
14、示区间为0255(十进制数). 调试效果如下所示:,35,从上图所示,字体被变量a传了过来,所以B文本对象中的字体仍然是A文本对象中的字体黑体,而颜色被代码改成了蓝色。,文件名: 20080513730唐小静08计算机实作8.fla,36,如果把A文本对象的显示方式改成密码方式,那么在A文本框里将会显示成*号,传值以后在B文本框里一样显示出正常字符,说明密码方式并不会影响原来的录入字符。,可以调试一下,此例不交作业。,37,6、在文本对象里用代码设置字符格式 先定义一个my_fmt变量,以后用这个变量来更改文本对象里的字符格式。 var my_fmt:TextFormat = new Text
15、Format(); / TextFormat()是构造函数,是固定使用方法。如果要改变字体、字号、字颜色和加粗等字符格式可以用以下代码。 my_fmt.font=楷体; my_fmt.size =60; my_fmt.color=0 x00FF00;/绿色 my_fmt.bold =true; b_txt.setTextFormat(my_fmt);,38,文件名: 20080513730唐小静08计算机实作9.fla,39,7、文本对象中的文本在播放器里可选 可以在属性框里设置这个属性,请看下图: 在文本对象的三种类型中此属性都可以设置。 把本实验中的A文本对象和B文本对象都设置成“可选”。
16、这样鼠标在两个文本对象里拖动都可以选择文字了。,40,8、对文本对象加边框 只能对动态文本和输入文本加边框,不能对静态文本加边框。 方法:在属性框里设置。 把本例中的A文本对象和B文本对象加上边框。,41,最后的调试结果如下图所示。8步做完以后还要另存为一次文件。 文件名:20080513730唐小静08计算机实作10.fla,42,三、常用术语,1、对象 对象是属性和方法的集合。例如按钮、影片剪辑、图形元件等。 对象类型:自定义对象和内置对象。内置对象在语言中预先定义了,可以直接拿来使用。 自定义对象通过脚本指定,其属性和方法可以由用户设定。 2、实例 实例是属于某个类的对象。类的每个实例均
17、包含该类的所有属性和方法。 实例名称是脚本中用来表示影片剪辑实例和按钮实例的唯一名称,可以在属性框里为舞台上的实例指定实例名称。,43,在下例中,在舞台上添加了一个影片剪辑,然后在影片剪辑的属性框里指定实例名称.,取实例名称,44,3、属性 属性是对象的特性。例如,对象的位置、大小和颜色等。 4、方法 方法是类关联的函数。例如setcolor()方法是movieclip类的内置方法,它设定了影片剪辑的颜色。 5、事件 事件是在SWF文件播放时发生的动作,多半与鼠标操作有关。,45,6、动作 在播放SWF文件时为完成某些任务所执行的语句。 7、数据类型 数据类型描述变量的信息种类。在动作脚本中数
18、据类型主要有:字符串、数字、布尔值、影片剪辑、函数、空值和未定义等。 8、变量 变量是保存数据的存贮空间。变量一般要求定义后使用。,46,var x:Number=15; /定义数据类型与赋值同时进行 var x=15; /用赋值的方法指定数据类型 var只定义变量,但不能确定数据类型。 9、标识符 用于表示变量、属性、函数和方法的名称。 标识符的第一个字母必须是字母、下划线和$符,其后的字符还可以是数字, 要区分大小写。,47,10、常数和常量 常数没有名称,直接使用。而常量有名称,只是常量中的内容不变。一般书中常数和常量没有区分。 Math对象中的部分常量: 常量 说明 E 表示自然数e
19、LN10 表示以10为底的自然对数的值2.30 LN2 表示以2为底的自然对数的值0.693 PI 表示圆周率,3.14159 SQRT1_2 表示1/2的平方根0.707 SQRT2 表示2的平方根1.414,48,11、关键字 有特殊含义的保留字。这类保留字已经被系统使用,用户不能再作为标识符来使用。 12、运算符 对于不同类型的数值有不同的运算符。运算符操作的量称为操作数。 13、表达式 由运算符和操作数两部分组成。不同类型的数据一般有不同的表达式。,49,14、函数 函数是可重复使用的一组代码,大部分有返回值,有些没有返回值。 构造函数用于定义类的属性和方法的函数,当要创建一个对象时一
20、般可以使用构造函数来创建,例如要创建一个Array数组对象,可以使用Array()类构造函数,其代码如下: var my_array:Array=new array(); 也可以用对象构造函数创建一个对象实例. 实验:as实作11.fla,50,var dzg:Object=new Object(); =戴政国; dzg.work=老师; dzg.adr=重庆师范大学七幢; dzg.tel trace(+dzg.work+家住+dzg.adr+电话号码+dzg.tel);,51,15、参数 参数用于向函数传递值的占位符。 16、类 可以
21、用来创建和定义新对象类型的数据类型。在定义类时,要在外部脚本文件中使用class关键字定义。 /在AS脚本文件中的代码 Class Circle Private var radius:number Private var circumference:number 17、包 包放在指定类的路径目录之下,包含一个或者多个类文件的目录。,52,四、基本语法,1、点 点(.)表示“的”的关系,表示了一种隶属关系或者属于关系。 例如: 桌面.书 桌面.书.字 My_mc._x; My_mc.play();,53,2、分号 语句的结束符。在每句代码的后面都要打分号。 3、大括号 在事件处理函数、类定义和一
22、般函数定义时,要用大括号组合在一起形成块,即大括号里的代码是函数或者类的定义体。 /事件处理函数 on(release) mydate=new date(); currentmonth=mydate.getmonth(); ,54,/类 class circle(radius) 代码; class square(side) 代码; /函数 circlearea=function(radius) return radius*radius*Math.PI; ,55,squarearea=fuction(side) return side*side; 4、小括号 在函数定义时,要将所有参数都放在小括
23、号中. Function myfuction(name,age,reader) /代码 在函数调用时,也要在小括号里填写参数.,56,5、注释 /注释说明字符串,只用于一行. /* 注释一个片区,用于数行或者一个片区. */ 6、分区大小写 AS动作脚本代码要区分大小写。这是非常不幸的事件。所以,以后大家一定要注意这一点。否则代码中频繁出现小错误会让人绝望。,57,五、数据类型,1、字符串类型 常量字符串用定界符引起来。定界符有双引号和单引号。 mystring=“L7”; greeting=“WELCOME,”+CHILD; 如果在字符串中要表示双引号,要用转义符” MYSTR=“”WAVE
24、”; 转义符如下表所示:,58,59,2、数字类型 Number 数据类型是双精度浮点数。数字对象的最小值大约为 5e-324,最大值大约为 1.79e+308。 用户可以使用+、-、*、/、%(求模)、+(递增)和-(递减)等算术运算符来处理数字,也可使用内置的Math和Number类的方法来处理数字。 例如: var aa:Number=Math.sqrt(100); trace(aa); /输出结果10 3、布尔类型 真值为true和false。当true和false转换成数字时会变成1和0.,60,3、MovieClip类型 MovieClip就是影片剪辑,是flash的一种元件。它是
25、图形元素数据类型。用户可使用MovieClip类的方法控制影片剪辑元件。影片剪辑的后缀名为mc,最好在取影片剪辑实例名称时加上mc后缀名。 例如:my_mc.stop(); my_mc.play(); 实验:AS实作12.fla 先在一个影片剪辑中做一个简单动画(矩形从左到右地移动),然后在图层1的第1帧上挂上影片剪辑,并设置实例名称为my_mc。,61,在图层2的第1帧上挂上两个按钮。一个用作放映,一个用作停止放映。 放映按钮代码: on(release) my_mc.play(); 停止按钮代码: on(press) my_mc.stop(); ,62,63,64,4、空值类型 空值数据类
26、型只有一个值,即null,它表示“没有值”,也就是没有任何数据。 Null值可以用在以下场合中: 指示变量尚未赋值。 指示变量不再包含值。 作为函数的返回值,指示函数没有可以返回的值。 作为函数的参数,指示省略了一个参数。,65,5、未定义类型 未定义数据类型有一个值,即undefined,表示尚未定义和赋值的变量。 6、 Object对象类型 对象是属性和方法的集合。属性 是用于描述对象的特性。例如,对象(如影片剪辑)的透明度是描述其外观的一个特性。因此,_alpha (透明度)是一个属性。每个属性都有名称和值。属性的值可以是任何 Flash 数据类型,甚至可以是 Object 数据类型。这
27、样就可以使对象包含对象(即将其嵌套)。,66,若要指定对象及其属性,可以使用点 (.) 运算符。例如,在下面的代码中,hoursWorked 是 weeklyStats 的属性,而后者是 employee 的属性: employee.weeklyStats.hoursWorked ActionScriptMovieClip对象具有一些方法,可以使用这些方法控制舞台上的影片剪辑元件实例。此示例使用 play() 和 nextFrame() 方法: mcInstanceName.play(); mc2InstanceName.nextFrame();,67,也可以创建自定义对象来组织 Flash
28、应用程序中的信息。若要使用 ActionScript 向应用程序添加交互操作,将需要许多不同的信息.例如,可能需要用户的姓名、年龄和电话号码;球的速度;购物车中货物的名称;已加载的帧数;或用户上次所按的键。通过创建自定义对象,可以将信息分组,简化您的脚本撰写过程,并且能重新使用您的脚本。 下面的 ActionScript 代码显示了使用自定义对象组织信息的示例。它创建了一个名为 user 的新对象并创建了三个属性,name、age 和 phone,这些属性分别是 String 和 Number 数据类型。,68,var user:Object = new Object();
29、 = Irving; user.age = 32; user.phone = 555-1234; 参考:AS实作11,69,用对象组织数据 您可能已经习惯了放置在舞台上的对象。例如,舞台上可能有一个 MovieClip 对象,并且该对象内还包含其它影片剪辑。放置在舞台上的文本、影片剪辑和按钮等都被称为对象。 在 ActionScript 中,对象是属性和方法的集合。每个对象都有其各自的名称,并且都是特定的类型实例。内置对象来自在 ActionScript 中预定义类。例如,内置的 Date 类可以提供用户的计算机上的系统时钟的信息。可以使用内置的 LoadVars 类将变量加载到 SWF 文件
30、中。,70,还可以使用 ActionScript 创建对象和类。可以创建一个对象来保存数据的集合,例如一个人的姓名、地址和电话号码。可以创建一个对象来保存图像的颜色信息。用对象组织数据有助于更好地组织 Flash 文档。有关创建自定义类以保存方法和属性集合的一般信息,请参阅帮助中的“编写自定义类文件”。有关内置类和自定义类的详细信息,请参阅帮助中的类。 在 ActionScript 中创建一个对象有多种方法。下例中用两种不同的方法创建了一个简单对象,然后循环访问这些对象的内容。,71,在 Flash 中创建简单对象: 创建一个新的 Flash 文档,并将它保存为: as实作13.fla。 在时
31、间轴中选择第 1 帧,在动作面板中,键入下面的 ActionScript: / 第一种方法 var firstObj:Object = new Object(); firstObj.firstVar = hello world; firstObj.secondVar = 28; firstObj.thirdVar = new Date(1980, 0, 1); / 1980 年 1 月 1 日 此代码是创建简单对象的一种方法,它创建了一个新的对象实例并在该对象中定义了几个属性。,72,/ 第二种方法 var secondObj:Object = firstVar:hello world, se
32、condVar:28, thirdVar:new Date(1980, 0, 1); 这是创建对象的另一种方法。两个对象是等效的。以上代码创建一个新的对象,并使用对象简化记号初始化了一些属性。 要循环访问前面的每一个对象并显示对象的内容,请将以下 AS脚本代码添加到时间轴的第 1 帧上(在已经输入的代码之后): var i:String; for (i in secondObj) trace(i + : + secondObji); 测试影片,输出面板上将显示以下内容: firstVar: hello world secondVar: 28 thirdVar: Tue Jan 1 00:00:
33、00 GMT-0800 1980,73,“AS实作13.FLA”文件的调试结果,74,注意 变量不一定按照该顺序显示在“输出”面板中。在使用 for.in 循环时,无法保证返回顺序;播放器会按照无法预测的顺序返回对象的内容。 也可以使用数组来创建对象。可以不使用一系列变量(例如 firstname1、firstname2 和 firstname3)来表示变量的集合,而是用一个对象数组来表示同样的数据。下面将演示这一做法。,75,for.in 参考资料: for (variableIterant in object) statement(s); 迭代对象的属性或数组中的元素,并对每个属性或元素执
34、行 statement。对象的方法不能由 for.in 动作来枚举。 有些属性不能由 for.in 动作来枚举。例如,不能枚举影片剪辑属性,例如 _x 和 _y。在外部类文件中,和实例成员不同的是,静态成员是不能枚举的。 for.in 语句迭代所迭代对象的原型链中对象的属性。首先枚举该对象的属性,接着枚举其直接原型的属性,然后枚举该原型的原型的属性,依次类推。它以反向索引顺序迭代各个属性。for.in 语句不会将相同的属性名枚举两次。如果 child 对象有原型 parent,并且两者都包含属性 prop,则对 child 调用的 for.in 语句将枚举来自 child 的 prop,而忽略
35、 parent 对象中的该属性。,76,如果只执行一条语句,则用来括起要由 for.in 语句执行的语句块的花括号 () 是不必要的。 如果在一个类文件(外部 AS 文件)中编写一个 for.in 循环,则实例成员对于该循环不可用,而静态成员则可用。然而,如果在一个 FLA 文件中为类的实例编写一个 for.in 循环,则实例成员在循环中可用,而静态成员不可用。,77,可用性:ActionScript 1.0、Flash Player 5 参数 variableIterant:String 要作为迭代变量的变量的名称,迭代变量引用对象的每个属性或数组中的每个元素。 示例 下面的示例使用 for
36、.in 迭代对象的属性: var myObject:Object = firstName:Tara, age:27, city:San Francisco; for (var prop in myObject) trace(myObject.+prop+ = +myObjectprop); 输出: myObject.firstName = Tara myObject.age = 27 myObject.city = San Francisco,78,下面的示例使用 for.in 迭代数组的元素: var myArray:Array = new Array(one, two, three); f
37、or (var index in myArray) trace(myArray+index+ = + myArrayindex); 输出: myArray2 = three myArray1 = two myArray0 = one,79,下面的示例将 typeof 运算符与 for.in 结合使用以迭代特定类型的子级: for (var name in this) if (typeof (thisname) = movieclip) trace(I have a movie clip child named +name); 注意:如果有多个影片剪辑,则输出结果由这些剪辑的实例名称构成。 下面
38、的示例枚举影片剪辑的子级,并将每个子级发送到其各自时间轴的第 2 帧。RadioButtonGroup 影片剪辑是具有以下三个子级的父级:_RedRadioButton_、_GreenRadioButton_, 和 _BlueRadioButton_。 for (var name in RadioButtonGroup) RadioButtonGroupname.gotoAndStop(2); ,80,使用数组创建对象: 创建一个新的 Flash 文档,并将它保存为 arrayObject.fla。 在时间轴中选择第 1 帧,在动作面板中,键入下面的 ActionScript: var use
39、rsArr:Array = new Array(); usersArr.push(firstname:George); usersArr.push(firstname:John); usersArr.push(firstname:Thomas); push方法将一个或多个元素添加到数组的结尾。 将变量组织到数组和对象中的好处是,可以更方便地循环访问变量并查看值,如以下步骤中所示。,81,在步骤 2 中添加的 ActionScript 之后键入以下代码: var i:Number; for (i = 0; i usersArr.length; i+) trace(usersArri.firstn
40、ame); / George, John, Thomas 测试影片,输出面板中将出现以下文本: George John Thomas 实验:AS实作14.fla 下例介绍了循环访问对象的另一种方法。在此示例中,将创建一个对象并使用 for.in 循环对其执行循环,每个属性都出现在输出面板中:,82,var myObj:Object = var1:One, var2:Two, var3:18, var4:1987; var i:String; for (i in myObj) trace(i + : + myObji); 输出以下结果: var1: One var2: Two var3: 18
41、var4: 1987,83,资料: push(Array.push 方法) public push(value:Object) : Number 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。 可用性:ActionScript 1.0、Flash Player 5 参数 value:Object 要追加到数组中的一个或多个值。 返回 Number 表示新数组长度的一个整数。 示例 下面的示例创建包含两个元素的数组 myPets_array,这两个元素为 cat 和 dog。第二行将两个元素添加到数组。,84,因为 push() 方法返回数组的新长度,所以最后一行中的 trace()
42、语句将 myPets_array 的新长度 (4) 发送到输出面板。 var myPets_array:Array = new Array(cat, dog); var pushed:Number = myPets_array.push(bird, fish); trace(pushed); 输出: 4 以上代码可以改写成: var myPets_array:Array = new Array(cat, dog); myPets_array.push(bird, fish) ; var pushed:Number = myPets_array.length; trace(pushed); 输出
43、:4 实验:AS实作15.FLA,85,7、void类型 Void 数据类型有一个值 void,用来在函数定义中指示函数不返回值,如下例所示: / 创建返回类型为 Void 的函数 function displayFromURL(url:String):Void 代码 8、原始和复杂数据类型 可以将所有不同的数据类型值划分为两个主要的类别:primitive 或 complex。,86,原始值(即原始数据类型)是 ActionScript 在最低抽象层存储的值,这意味着对原始数据类型的操作比对复杂数据类型的操作往往会更快、更高效。以下数据类型都定义了一个原始值集合(可能包含一个原始值,也可能包
44、含多个):Boolean、null、Number、String 和 undefined。 复杂值(或复杂数据类型)不是原始值,但它引用原始值。通常,我们称之为引用 数据类型。复杂值属于 Object 数据类型,或者说是基于 Object 数据类型的一种数据类型。定义复杂值的集合的数据类型包括:Array、Date、Error、Function 和 XML。有关这些复杂数据类型的详细信息,请参阅ActionScript 2.0 语言参考中的相应条目。 包含原始数据类型的变量与包含复杂类型的变量在某些情况下的行为是不同的。有关详细信息,请参阅在项目中使用变量。,87,88,在ActionScrip
45、t最原始的数据类型中,还有int和uint两种数据类型. int数据类型:存储32位有符号整数. uint数据类型:存储32位无符号整数.,89,六、变量赋值方法,1、变量的数据类型自动指定 当变量类型不确定时,可以在赋值时指定数据类型 Var x=3; 这样x变量为数字类型。 Var x=“hello”; 这样x变量为字符串类型。 Var x; X=“next in line,number”+7; X变量也是字符串类型。 例: X=123; Trace(typeof(x); 显示X为数字类型。,90,2、人为指定变量的数据类型 Var x:Number=7 /定义X为数字类型 Var bir
46、thday:Date=new Date(); /定义birthday为日期类型 Function welcome(firstname:String,age:Number) 代码 ,91,七、数据类型的转换和查看,ActionScript 2.0 允许将一种数据类型转换为另一种数据类型。将对象转换为不同的类型意味着将对象或变量中保存的值转换为不同的类型。 类型转换的结果因涉及的数据类型而异。要将对象转换为不同的类型,请用小括号 () 括起对象名并在它前面加上新类型的名称。例如,以下代码取一个布尔值并将它转换为一个整数。 var myBoolean:Boolean = true; var myNu
47、mber:Number = Number(myBoolean); trace(myNumber); trace(typeof(myNumber); 注:true 逻辑值转换为数字时为1,false逻辑值转换为数字时为0.,92,八、变量,变量是包含信息的容器,容器本身没有变,但容器中的内容可以改变。变量本质上是一部分内存物理存储空间。首次定义变量时最好指定一个初值,这样有助于在播放SWF文件时跟踪和比较变量值。 1、变量命名规则: (1)必须是标识符。 (2)不能是关键字或者动作脚本文本中已经使用了的实例名称或者元件名称,例如true,false,null,undefined等,否则代码会报错
48、。 (3)在变量有效范围内变量名必须是惟一的。,93,2、变量的作用域 从变量的作用域来看,变量分为三大类型: 本地变量,时间轴变量和全局变量。 (1)声明本地变量 使用var语句声明本地变量,它只限于它的代码块内有效,当脚本结束时本地变量无效。在不同的代码块中同名的变量并不是同一变量,不会产生冲突。 (2)声明时间轴变量 也是用var语句声明的变量,只是定义时在时间轴的某个关键帧上定义。一般情况下在定义时间轴变量时一般会在第1帧上进行。如果在后面的关键帧上定义时间轴变量,则在前面的时间轴上无法使用此变量,不过当影片重放时后面定义的变量在前面关键帧上运用时自然就有效了。,94,实验:AS实作1
49、6.FLA 在图层1的10帧上插入一个关键帧,然后在关键帧上写一句代码: Trace(aa) 再画一个红色椭圆。 在图层1的20帧处插入一个关键帧,然后写代码: Var aa:number=555 Trace(aa) 再画一个蓝色矩形. 把时间轴延伸到30帧处,CTRL+回车,看效果。,95,(3)声明全局变量 不能使用var语句来定义变量,要用_global定义的变量。 例如:_global.myname=“dzg” 全局变量和函数在文档中每一个时间轴和范围内都是可见的。要声明(或创建)全局范围时要在变量名前加 _global 标识符,不能使用 var定义全局变量。例如,用以下代码定义全局变
50、量: var _global.myName = “George”; / 定义全局变量的错误语法 _global.myName = George; / 定义全局变量的正确语法 如果用全局变量相同的名称初始化一个局部变量,则在处于该局部变量的有效范围内对全局变量不具访问权,如下例所示:,96,/实验:AS实作17.FLA _global.counter = 100; / 声明全局变量 trace(counter); / 访问全局变量并显示 100 function count():Void for (var counter:Number = 0; counter = 2; counter+) /
51、局部变量 trace(counter); / 访问局部变量并显示 0 ,1, 2 count(); trace(counter); / 访问全局变量并显示 100 最后显示结果:100,0,1,2,100,97,此示例只是表明在 count() 函数范围内未访问该全局变量。但是,如果加上一个 _global 前缀,您就可以访问具有全局范围的变量了。例如,如果为 counter 加上前缀 _global,就可以访问它,如下面的代码所示: trace(_global.counter); 不能对 _global定义的全局变量指定严格的数据类型,因为在指定数据类型时必须使用 var 关键字。这样局部变
52、量和全局变量定义将发生冲突。例如,不能执行以下操作: _global.foo:String = “abc”; /语法错误 var _global.foo:String = “abc; /语法错误 当SWF 文件访问全局变量时,FlashPlayer 7 及更高版本将强行施加限制。有关详细信息,请参阅了解安全性。,98,3、使用变量 在脚本中一般要求先申明变量,再使用变量,否则输出结果可能意想不到。 例如: var x=6; var ss=x*x; trace(ss); 输出结果为36 var ss=x*x; trace(ss); var x=6; 输出结果为NaN值。 这是由于在输出前X变量没
53、有定义造成的。,99,下面的例子进一步说明了变量的作用域: 例1: function localscope() var mystr:String=local; localscope(); trace(mystr); /输出:undefined 例2: var strl:String=timeline; function scopetest():Void var strl:String=LOCAL; trace(strl); scopetest(); /输出: LOCAL trace(strl); /输出:timeline,100,九、运算符,1、数值运算符 (1)加减乘除运算 var n1:N
54、umber,n2:Number,sum:Number; n1=10; n2=20; sum=(n1+n2)/5; trace(sum); trace(n1*n2-100); 输出结果:6,100,101,(2)求模运算符%(求余数) var n1:Number=10; var n2:Number=22; trace(n2%n1); 输出结果为:2 (3)递增运算符+和递减运算符- i+相当于i=i+1 i+也相当于i=i+1 当然,+i和i+在单独时没有区别,但在关系表达式中有差别。 if(+i=20),意思是先i=i+1,然后再 i=20 if(i+=20),意思是先i=20,然后再i=i+
55、1,102,实验:AS实作18.FLA var i:Number=20; trace(+i=20); /关系比较时要用两个=号 trace(i); i=20; trace(i+=20); trace(i); 输出结果: false 21 true 21 -运算符的用法一样。,103,(4)条件运算?: expression1 ? expression2 : expression3 说明 如果 expression1的值为 true,则返回 expression2 的值;否则返回 expression3 的值。 示例 x = 5; y = 10; z = (x 6) ? x: y; trace
56、(z); 输出:5,104,2、关系运算符和逻辑运算符 常用关系运算符有: 大于 = 大于等于 = 等于 = 严格等于 != 不等于 != 严格不等于 var bb:Number=20; trace(aa5 /输出为true,106,/* var aa:Boolean =true; var bb:Number=1; trace(aa=bb); trace(bb=aa); trace(aa=bb); trace(bb=aa); trace(aa!=bb); trace(bb!=aa); trace(aa!=bb); trace(bb!=aa); 输出结果: true true false fal
57、se false false true true,107,3、位操作运算符 按位运算符在内部处理浮点数,四个字节,32位二进制整型数。 /二进制数为01111111 var bb=4; /二进制数为00000100 trace(aa 输出结果: 4 127 123 -128 -5,109,补充资料: 按位 NOT 运算符 expression 也称为对一求补运算符或按位求补运算符。将 expression 转换为一个带符号的 32 位整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。 例如,十六进制值 0
58、 x7777 表示为二进制数:0111011101110111 该十六进制值 0 x7777 的按位取反的二进制数为:1000100010001000 在十六进制中,它是 0 x8888。因此,0 x7777 就是 0 x8888。,110,按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。 浮点数通过舍去小数点后面的所有位来转换为整数。正整数转换为无符号的十六进制值,其最大值为 4294967295 或 0 xFFFFFFFF;转换大于最大值的数时,会舍去最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648
59、或 0 x800000000;小于最小值的数转换为精度更高的 2 的补码,同时也会舍去最高有效位。 由于返回值解释为带符号的 2 的补码数,因此,返回值将是 -2147483648 到 2147483647 范围中的一个整数。,111, 按位向左移位运算符 expression1 expression2 将 expression1 和 expression2 转换为 32 位整数值;您可以将它们称为 V1 和 V2。将值 V1 的所有位向左移动 V2 个位置。 将此运算中 V1 移到左端以外的位舍去,并在右端空出位的位置插入零。将一个值向左侧移动一位与这个值乘以 2 等效。,112,浮点数通过舍去小数点后面的所有位来转换为整数。正整数转换为无符号的十六进制值,其最大值为 4294967295 或 0 xFFFFFFFF;转换大于最大值的数时,会舍去最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0 x80
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年分层分级护理带教模式应用与探讨
- 2026年耐药性肺炎临床护理分享
- 2026 年高职护理实习生临床带教适配策略
- 2026 年中医护理技术临床带教实践分享
- 2026年内分泌科糖尿病合并高血压联合护理
- 文字编排测验试题与答案呈现
- 公安县2025湖北荆州市公安县第二批事业单位人才引进132人笔试历年参考题库典型考点附带答案详解
- 团体标准《兴隆咖啡师劳务品牌 焙炒加工人员能力评定规范》
- 校长新学期师德师风专题会议讲话-少一分冷漠多一点温暖
- 2026年N1叉车司机证模拟考练习题
- 2026 年秋季开学:智慧课堂建设教师应用培训
- 2026年云南省基层法律服务考试真题及答案
- (2026年)儿童心肺复苏课件
- 情感识别对心理危机干预效果课题申报书
- 新版2026年高考物理(广东卷)真题详细解读及评析
- 2026年6月大学英语四级考试真题(第3套)附答案解析
- 2026年大学计算机基础期末考试仿真题解析
- 兽医实验室管理制度
- 2025-2026学年江苏省无锡市译林版(三起)四年级上册英语期末试卷
- 物业客服微信回复培训
- 冷藏车司机补充合同协议
评论
0/150
提交评论