十三、变量
通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态文本显示变量、输入文本输入变量,会使用调试命令 trace。了解 Flash中的数据类型.
认识变量
在日常生活中人们处理信息的时候,必需首先把信息保存起来,比如你将一群羊分成两部分,你必须把它们赶到不同的领地,这些领地暂时保存着羊群,即便你是凭空想象,你想象时的信息也要暂时保存在脑细胞中,也就是说要处理任何信息首先就得保存信息,动作脚本也不例外, 动作脚本使用变量保存信息,所以说变量是保存数据的一种容器,容器本身始终不变,但内容 可以更改,这个比喻是非常形象的,现在有一个容器名称为 a,放进一些盐它就是盐罐子,放进 一些醋它就是醋罐子了。在 flash 中,通过动作脚本可以建立很多“容器”来存放 flash 中的信息,比如影片剪辑的透明度、坐标等,也可以存放人的名字、年龄等。为了区别不同的“容器”必须为每个“容器”取一个自己的名字, 即变量名。怎么样来定义“容器”呢?下面来定义一个容器,它的名字是 myAge,用来存放年龄。定义如下:
var myAge;
var 是用来定义变量的关键字。
MyAge 便是变量名。
那么这个变量怎么存放年龄呢?在定义变量时可以给定一个值,即变量值,如下所示:
var myAge=66;其中“=”号代表赋值运算符,把 66 这个值赋给变量 myAge。
注意 :首次定义变量时,为该变量指定一个已知值,这就是所谓的初始化变量。
变量的命名的规则
用不同的符号对不同的事物进行标记,用作标记的符号就是标识符,标识符是用于表示变量、属性、对象、函数或方法的名称。
命名变量名要遵守如下的规则:
(1)不能是as 关键字,所谓关键字也称保留字,指as 预先定义好的标识符。
(2)不能以数字开头,第一个字符必须是字母或下划线“_”和美元符“$” 。
(4)中间不能有空格。
(5)变量名中不能使用标点符号,
(6)不应将动作脚本语言中的任何元素用作变量名称。
正确的示例:
a,m,ba,assw,a_aa,my_mc,$abc,$_ss,$_mc等等
my_txt 保存文本的变量
错误的示例:
2_m //不能用数字开头
my-a //不能用减号分割
a.ss //不能使用标点符号
a b //不能有空格
如:
var 年龄=20;
其中年龄就是变量名。
注意 : 在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀,在实际编程中我们往往不太注意这些。 规范的命名变量使其他人更容易阅读, 命名变量时通过为其增加一些特殊的后缀触发代码提示。下表中为支持代码提示所需后缀
trace()函数
在编写脚作脚本中,我们会大量用到 trace()命令。trace()实际算是一个调试命令,它的输出都会在“输出面板”显示出来。 而真正发布作品的时候 trace()却不再输出。是最方便的调试命令,trace()命令非常简单:
应用格式:
trace(expr
下面我们使用 trace 函数输出变量值
在主场景第 1 帧打开动作面板,输入下列代码:
var a=5
var b="欢迎大家来到爱国者安全网学习 AS"
var c=(3+5)
trace(a);
trace(b)
trace(c)
变量赋值
使用变量保存信息就叫做给变量赋值。在 Flash中给变量赋值常用的方法有:
var a=5;//把常量 5 赋值给变量 a。
trace(a);//输出面板输出 5
set(“a”,5);//用 set()方法为变量赋值为 5。
trace(a);//5
this["a"+1]=0
trace(a1);//0
确定变量的范围和声明变量
变量的范围是指变量在其中已知并且引用区域。在动作脚本中有 3 种类型的变量范围:
? 本地变量在声明它们的函数体(由大括号界定)内可用。
? 时间轴变量可用于该时间轴上的任何动作脚本。
? 全局变量和函数对于文档中的每个时间轴和范围可见。
本地变量
要声明本地变量,请在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码块,它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的动作脚本结束时到期。本地变量也可防止出现名称冲突,在定义本地变量时可以为其指定数据类型,这有助于防止将类型错误的数据赋给现有变量
trace(expr
var a=5
var b="
var c=(3+5)
trace(a);
trace(b)
trace(c)
时间轴变量
时间轴变量可用于该时间轴上的任何动作脚本。要声明时间轴变量,可以使用 set variable 动作或赋值“=”动算符,应在该时间轴中的所有帧上都初始化这些变量,应确保首先初始化变量,然后尝试在动作脚本中访问它。声明时间轴变量也可以使用 var 例如:如果将代码“var x=10;”放置在第 20 帧上,则附加到第 20 帧之前的任何帧上的动作脚本都无法访问变量。
全局变量
全局变量和函数对于文档中的每一时间轴和范围而言都是可见的。若要创建具有全局范围的变量,请在变量名称前使用_global 标识符,并且不使用 var 语法。
例如 ,在根时间轴第一帧上定义两个变量,然后将 trace()放在不同地点去返回它们的值,以观察它们的区别
Var a=5 ;
_global.b=3 ;
在程序中使用变量
1.必须在动作脚本首先给变量赋值,然后才能在表达式中使用它。在 flash 中可以使用变量动态的设置其它动作中的不同参数。
例如:
on (release) {
k = random(30)+50;
setProperty("mc", _xscale, k);
setProperty("mc", _yscale, k);
}
2.如果使用未赋初值的变量该变量的值将是 NaN或 undefined。并且动件脚本可能产生意外的结果。
例如:
var k=x*x;
trace(k);//NaN
var x=6;
在下面的示例中申明变量的语句必顺排在第一行,这样 k 就可以替换为一个值;
var x = 6;
var k = x*x;
trace(k);//36
用动态文本显示变量值
(1) 启动 flash,新建一个文档,文档属性默认。
(2) 单击文本工具,打开“属性”面板,在其文档类型选项中选择“动态文本”
(3) 在舞台中单击建立一个动态文本,在“属性”面板把变量名设为 myAge,
选择图层 1的第 1 帧,打开动作面板,输入以下代码:
var myAge=20
测式影片,在动态文本中可以看到刚才定义的变量值。
用输入文本输入变量值
(1)在场景“图层 1”的第一帧,在舞台上建立一个动态文本和输入文本,在属性面板里
为动态文本输入实例名“输入” ,为输入文本输入实例名“输出” 。
(2)制作一个“提交”按钮和“清空”按钮。然后为按钮添加代码
提交按钮上的代码:
on (press) {
输出 = 输入;
}
清空按钮上的代码 :
on (press) {
var 输入 = "";
var 输出 = "";
}
(3)插入“图层 2” ,在图层 2 的第 1 帧,添加代码:
输入=""
测试影片,观看效果。
圆柱体表面积计算公式:
在输入文本中输入半径和高的值后,点击计算按钮,对应的面积值就会显示在动态文本中.
(1)在舞台上建立两个输入文本,分别在属性面板里输入变量名“r”和“h” 。再建立一个输入文本,在属性面板里输入变量名“s” ,自己安排好文本的位置。
(2)制作一个“计算”按钮和“清空”按钮,拖入舞台,放到适当位置。
(3)添加 AS 代码:
计算按钮上的代码为:
on (release) {
s = 2*Math.PI*(r*r)+2*Math.PI*r*h;
}
清空按钮上的代码为:
on (press) {
r = "";
h = "";
s = "";
}
代码解释:在表达式 2*Math.PI*(r*r)+2*Math.PI*r*h 中,Math.PI 代表圆周率,在计算精确度不高时, 通常是取它的近似值为 3.14。而 2*Math.PI*(r*r)表示两底面的面积和;2*Math.PI*r*h表示侧面积。
---------------------------------------------------------------------
老虎说:这个计算按钮上的代码小数很多,要四舍五入后保留两位小数应该用Math.round(数字)函数。其表面积计算按钮上的代码为:
on (release) {
var a:Number = Math.round(Math.PI*100)/100;
//Math.round(数字)函数 意义:对数字经四舍五入后取得整数。再乘100除100,是对数字经四舍五入后保留两位小数
s = 2*a*(r*r)+2*a*r*h;
}
其体积计算按钮上的代码为:
on (release) {
var a:Number = Math.round(Math.PI*100)/100;
v = a*(r*r)*h;
}
其清空按钮上的代码为:
on (press) {
r = "";
h = "";
s = "";
v = "";
}
老虎加注 :代码也可以写在AS层第一帧上。
var a:Number = Math.round(Math.PI*100)/100;
b_btn.on
s = 2*a*(r*r)+2*a*r*h;
};
t_btn.on
v = a*(r*r)*h;
};
q_btn.on
r = "";
h = "";
s = "";
v = "";
};
代码写在按钮上与写在帧上相比较,好像写在帧上能简便一些。
老虎说完了。
-------------------------------------------------------------------
数据类型
我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序都有一个共同特点;他们都需要处理数据.flash 中根据数据的处理方法的不同,对数据进行了分类,他们是:数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义和空值。
计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所以我们常说"变量是保存信息的容器" , 为了区别分不同类型的变量,就有了数据类型,变量有多种数据类型,数据类型描述变量或动作脚本元素可以包含的信息种类,下面讲解常见的数据类型。函数的值是由变量决定的,那么什么来决定变量呢?那是数据, 下面我们就说说 AS 中使用到的数据类型。AS 中的数据有两大类,一 类称之为原始类型(也叫初始类),另一类叫做参考类型 (也叫引用类)。
原始类型数据分为字符串、数值和逻辑型三种,它们都有常量 值,能够为其所代表的元素赋一个实际值。
参考类型数据包括影片剪辑和对象两种, 它们有一个可变的值, 包含了对元素实际值的引用。
此外还有两个特殊类型的数据:空值和未定义值。
字符串型(string) :字符串是诸如文字、字母、数字和标点符号等字符的序列。在动作脚本语句中输入字符串的方式是将其放在单引号或双引号之间,字符串被当作字符,而不是变量进行处理。例如“学习 Flash”“abcd”的等。还可以使用”+”等运算符对字符串进行操作。
例如:
trace("欢迎大家");
trace('来爱国者安全网学习');
trace("欢迎大家"+'来爱国者安全网学习');
数值型( (Number) ):您可以使用加(+)、减(-)、乘(*)、除(/)、求模(%)、递增(++)和递减(- -) 等算术运算符来处理数字,也可使用内置的 Math 和 Number 类的方法来处理数字。下面的示例使用 sqrt()(平方根)返回数值 100 的平方根 10。
trace(Math.sqrt(100));// 返回数值 100 的平方根 10
布尔型(boolean) :只有 “真(true) ”“假(false) ” 两种值的数据。布尔值是 true 或 false中的一个,动作脚本也会在适当时将值 true 和 false 转换为 1 和 0。布尔值经常与动作脚本中的比较运算符一起使用。
例如:
trace(3<1);
trace(-8<0);
对象(Object ): 对象是属性的集合。 每个属性都有名称和值,属性的值可以是任何的 Flash数据类型,甚至可以是对象数据类型。这样就可以使对象相互包含(即将其嵌套)。若要指定对象及其属性,可以使用点(.) 运算符。
影片剪辑 ( Movie Clip) :影片剪辑是 Flash 应用程序中可以播放动画的元件,是唯一引用图形元素的数据类型。MovieClip 数据类型允许您使MovieClip 类的方法控制影片剪辑元件,可以使用点(.) 运算符调用这些方法。影片剪辑是 Flash中最活跃的元素之一。
例如:
trace(_root.mc._x);
trace(_root.mc._height);
Undefined:表示未定义的数据类型,如下情况返回 undefined 值:
(1)对象属性不存在,
(2)声明了变量但从未赋值。
例如没有定义变量 a 的情况下。
trace(a);// Undefined。
trace(a+3);//NaN
测试数据类型 我们用如下函数可以判断数据类型:
typeof();
typeof()通常与 trace()结合使用,本例使用 trace 语句与 typeof 函数共同测试数据类型。为大家学习 Flash 数据类型实现更加深入的认识。
注意:我们的所有测试必须在 fla 源文件编辑状态下单击“控制”|“测试影片”才能在输出面板看到效果,测试 swf文件是不会得到任何输出的。
typeof用法
typeof(表达式)
表达式:一个字符串、影片剪辑、按钮、对象或函数。
说明: 运算符; 放在单个参数前的一元运算符。typeof 运算符让 Flash 解释器计算 表达式; 其结果为一个字符串,指示该表达式是字符串、影片剪辑、对象、函数、数字,布尔值。
示例:测试数据类型
(1)在舞台中放一个影片剪辑元件,并输入实例名“my_mc” 。
(2)在舞台中放一个按钮。并输入实例名“my_btn” 。
(3)在舞台中绘制一个动态文本,输入变量名“txt1”在动态文本中任意输入文字。
(4)在舞台中绘制一动态文本,输入文本实例名“txt2” 。在动态文本中任意输入文字。
在第一帧中输入脚本:
trace("测试结果"); //测试结果
trace(typeof (txt1)); //string(字符串型)
trace(typeof (my_mc)); //movieclip(影片剪辑)
trace(typeof (my_btn)); //object(按钮)
trace(typeof (txt2)); //string(文本字段)
trace(typeof (Math.PI)); //number(数字)
trace(typeof (3<1)); //boolean(布尔值)
trace(typeof (System)); //object(对象)
trace(typeof (stop)); //function(函数)
显示对各类表达式使用 typeof 运算符的结果如下表所示。
十四、运算符(一)
运算符表达式
运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作数。例如,在语句“foo+3”中, “+”运算符会将数值文本的值添加到变量 foo的值中;foo 和 3 就是操作数。
用运算符连接变量或者常量得到的式子叫做“表达式” 。各种表达式用运算符连接在一起还叫做表达式,例如:圆柱体表面积计算公式 2*Math.PI*r*r+2Math.PI*r*h。其中“2”和“Math.Pi” (表示圆周率π)都是常数,而“r”和“h”分别表示半径和高,是变量。 “+”和“*”分别表示加法运算和乘法运算,是运算符,这个式子就是表达式。
运算符的优先顺序
在同一语句中使用两个或多个运算符时, 各运算符会遵循一定的优先顺序进行运算,例如加 (+),减(-)的优先顺序最低, (*),除(/)的优先顺序较高,而括号具有最高的优先顺序,当一个表达式中只包含有相同优先级的运算符时,动作脚本将按照从左到右的顺序依次进行计算;而当表达式中包含有较高优先级的运算符时,动作脚本将按照从左到右的顺序,先计算优先级高的运算符,然后再计算优先级较低的运算符;当表达式中包含括号时,则先对括号中的内容进行计算,然后按照优先级顺序依次进行计算。
算术运算符
可以执行加法、减法、乘法、除法运算,也可以执行其他算术运算。Flash 中的算术运算符及简单的用法如下图
加法运算实例
在场景中绘制三个动态文本,变量名分别为 c1、c2、c3。再绘制两个输入文本,变量名为
a、b。放入四个按钮,分别选中按钮输入 AS:
(1) 数字类型相加
on (press) {
c1 = 3+2;
}
(2) 字符串相加
on (press) {
c2 = "学习"+"flash";
}
(3) 输入文本中的变量相加
on (press) {
c3 = a+b;
}
(4) 字符串类型转化为数字类型
on (release) {
c3 = Number(a)+Number(b);
}
说明:在执行加法运算时,如果,操作数是数字类型,那么执行的加法就是数字相加,如果操作数是字符串类型,那么这里的加法就是合并字符串;如果操作数中有字符串,有数字,那么程序就会把其中的数字当成字符串;动态文本和输入文本中的变量值, 程序都把它看成字符串类型,要执行数字相加时,要转化成数字类型。例如上例中的
c3 = Number(a)+Number(b);
区别 x++和++x
场景第 1 帧上
x=1
y=1
(1) x++
on (release) {
a_txt = ++x;
}
(2) ++x
on (release) {
b_txt = y++;
}
帧循环 i++
场景第 1 帧上 :
i=1;
stop();
场景第 2 帧上:
i++;
a_txt = i;
场景第 3 帧上:
gotoAndPlay(2);
播放按钮上:
on (release) {
this.play();
}
停止按钮上:
on (release) {
this.stop();
}
说明:在使用增量运算符时,运算符放在表达式前面与放在后面所执行的操作是不同的,当用++i 格式时将先执行加 1 操作,然后在使用表达式的值,当使用 i++格式时则首先使用表达式的值然后执行加 1 操作。
取模运算
场景第 1 帧上:
var i=0;
按钮上:
on (release) {
a_txt = i++;
b_txt=Number(a_txt)%2;
}
说明: :取余运算:首先进行除法运算然后取余数,叫取余运算,取余运算并不在乎其商是多少,目的只是获取余数,例如 7/2 余 1,我们使用余数 1 去参加运算,称为数字 7 对数字 2 的余(模),在flash中取余运算用%表示, 上式中的余数 1 保存到变量 my_a 中可以写 my_a=7%2,有些编程语言中取余运算不用%, 而是用 mod表示,所以有的人就把取余运算叫做取模运算。
赋值运算符
FLASH 用了大量的赋值运算符,可以使设计的动作脚本更简洁,下面列出了 FLASH 中使用的赋值运算符。
赋值运算符原理
第 1 帧上初始变量:
a=b=c=d=e=100;
按钮 1 上的 AS:
on (release) {
a += 1;
a_txt1 = a;
}
按钮 2 上的 AS:
on (release) {
b -= 1;
a_txt2 = b;
}
按钮 3 上的 AS:
on (release) {
c *= 0.1;
a_txt3 = c;
}
按钮 4 上的 AS:
on (release) {
d /= 0.1;
a_txt4 = d;
}
按钮 5 上的 AS:
on (release) {
e += 5;
e %= 2;
a_txt5 = e;
}
鼠标跟随特效 :
(1)在舞台上用静态文本输入文字“鼠标跟随特效”一次分离后,分别把各个字分别转换为影片剪辑元件。 注意: 转换时注册点要居中。然后依次分别输入实例名称:
“mc1” 、 “mc2” 、 “mc3” 、 “mc4” 、 “mc5” 、
“mc6” 、 “mc7”
(2) 插入“图层 2”在“图层 2”第 1 帧输入 AS 代码:
_root.mc1._x += (_root._xmouse-_root.mc1._x)/5
_root.mc1._y += (_root._ymouse-_root.mc1._y)/5;
_root.mc2._x += (_root.mc1._x-_root.mc2._x)/5;
_root.mc2._y += (_root.mc1._y-_root.mc2._y)/5;
_root.mc3._x += (_root.mc2._x-_root.mc3._x)/5;
_root.mc3._y += (_root.mc2._y-_root.mc3._y)/5;
_root.mc4._x += (_root.mc3._x-_root.mc4._x)/5;
_root.mc4._y += (_root.mc3._y-_root.mc4._y)/5;
_root.mc5._x += (_root.mc4._x-_root.mc5._x)/5;
_root.mc5._y += (_root.mc4._y-_root.mc5._y)/5;
_root.mc6._x += (_root.mc5._x-_root.mc6._x)/5;
_root.mc6._y += (_root.mc5._y-_root.mc6._y)/5;
(3) 图层 2 第 2 帧上的 AS 代码 :
gotoAndPlay(1);
语句讲解:
(1)_root._xmouse—鼠标在场景中的横坐标;_root._ymouse—鼠标在场景中的纵坐标。
(2)计算移动距离的方法:
距离=(终点坐标-实例坐标)/速度
实例坐标+=距离
或者描述为:实例坐标+=(终点坐标-实例坐标)/速度。
它实现的效果是从实例的初始位置开始, 减速地运动到终点。 在上例中只不过终点坐标也是实例坐标。实际上就是计算出两实例距离,然后把这个距离除以 5,每次移动距离的五分之一,所以把这里的 5 叫做速度。
这个公式不仅用于实例的移动, 如果用于影片剪辑的其它属性,如透明度可以实现实例透明度慢慢变化,如:
mc._alpha+=(20-mc._alpha)/5 (老虎理解20为被跟随的目标)
可以实现 mc的透明度慢慢从 100 减到 20。
on
mc._alpha += (20-mc._alpha)/5;
};
十五、运算符(二)
比较运算符
用于比较表达式的值,然后返回一个布尔值(true 或 false)。这些运算符最常用于循环语句和条件语句中。Flash中的算术运算符及简单的用法如表
比较返回值 (见老虎“AS课件文件夹” 比较运算符)
在舞台上绘制四个动态文本框,变量名分别为: m1_txt、m2_txt、m3_txt、m4_txt。再放入两个按钮。按钮 1 上的 AS:
on (release) {
m1_txt = 1 == 2; // false
m2_txt = 1>2; // false
m3_txt = 1<2; //true
m4_txt = 1 != 2; //true
}
按钮 2 上的 AS:
on (release) {
m1_txt=""
m2_txt=""
m3_txt=""
m4_txt = ""
}
条件运算符(见老虎“AS课件文件夹” 条件运算符原理)
?:(条件)
格式:表达式 1? 表达式 2:表达式 3
参数: 表达式 1计算结果为布尔值的表达式,通常为像 x < 5 这样的比较表达式。 表达式 2、表达式 3 任何类型的值。
说明:指示 Flash 计算表达式 1,如果表达式 1 的值为 true,则它返回表达式 2 的值;否则,它返回表达式 3 的值。
条件运算符原理
在舞台上绘制两个输入文本, 一个动态文本。 变量名分别为 “x_txt”、“y_txt”、“z_txt”。
再放入一个“计算”按钮、一个“清空”按钮。运算按钮上的 AS 代码:
on (press) {
x = Number(x_txt);
y = Number(y_txt);
z = (x<y) ? x : y;
z_txt = z;
}
清空按钮上的 AS 代码 :
on (press) {
x_txt=""
y_txt=""
z_txt=""
}
说明:影片播放时分别在输入文本中输入不能的数值,点击运算按钮,观察返回值,从而理解其原理。
一个按钮两种功能
制作一个小球旋转的影片剪辑元件,输入实例名 mc,放入一个按钮,然后输入 AS 代码 :
场景第 1 帧上的 AS 代码 :
var i=1
按钮上的 AS 代码:
on (press) {
i++%2 == 0 ? _root.mc.play() : _root.mc.stop();
}
说明:此例中是用取模来分支的,我们也可以用布尔值来进行分支,例如上例中可以这样写
语句:
第 1 帧上:
var k =false;
按钮上:
on (press) {
k ? _root.mc.play() : _root.mc.stop();
k = !k;
}
如果要控制几个影片剪辑代码要以这样写:
on (press) {
i++%2==0 ?[ _root.mc1.play(),_root.mc2.play()]:[_root.mc1.stop(),_root.mc2.stop()];
}
逻辑运算符(见老虎“AS课件文件夹” 逻辑运算原理)
逻辑运算符对布尔值(true 和 false)进行比较,然后返回第三个布尔值。在表达式中,用户可以使用逻辑运算符来判断某个条件是否存在。逻辑运算符主要用在 if和 do while动作中。有关逻辑运算符及其功能如表
逻辑运算原理
说明:我们打开素材,播放状态下,点击按钮,观察逻辑运算的返回值,从而理解逻辑运算原理。
控制小球运动(见老虎“AS课件文件夹” 运算符)
1.运行 Flash 8,大小默认,帧频为 24fps。
2.在舞台上绘制一个直径为 60 的无笔触放射状填充的小正圆(小球)。
3.选中小球,按 F8 键转化为影片剪辑元件,注册点居中。
4.选中小球,在属性面板里输入实例名: “mc”
5.插入“图层 2” ,把“图层 2”重命名为“AS” 。
6.在“AS”的第 2 帧,第三帧上插入空白关键帧。
在第 1 帧上添加 AS 代码:
var i = 20;
var j = 10;
第二帧上添加 AS 代码:
_root.mc._x<=30 || _root.mc._x>=520 ? i=-i : 0;
_root.mc._y<=30 || _root.mc._y>=370 ?j=-j : 0;
_root.mc._x += i;
_root.mc._y += j;
第 3 帧上的代码:
gotoAndPlay(2);
7.大家可以自己加一个背景,放在场影的最下层。
8.播放影片,观看效果。
代码讲解:
(1) 第 1 帧上初始的变量值是决定小球的运动方向与运动速度的。
(2) 第 2 帧上用条件运算符来控制小球运动到场影的边缘时就要反向,速度不变。
(3) 第 3 帧上是让播放头在第 2 帧同第 3 帧之间循环。
(4) 此例条件运算式了中,第三个表达式:“0”是不起任何作用的,但语句格式中,不能没有它。
评论