FLASH脚本5

来源:互联网 发布:网络语咸鱼是什么意思 编辑:程序博客网 时间:2024/05/16 11:39
5、FLASH脚本-变量、运算符(一)、变量(二)      十三、变量
通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态
文本显示变量、输入文本输入变量,会使用调试命令 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;
其中年龄就是变量名。
注意 : 在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀,在实际编程中
我们往往不太注意这些, 规范的命名变量使其他人更容易阅读, 命名变量时通过为其增加
一些特殊的后缀触发代码提示。下表中为支持代码提示所需后缀

[attach]1528[/attach]

trace()函数
在编写脚作脚本中,我们会大量用到 trace()命令。trace()实际算是一个调试命令,它的输出
都会在“输出面板”显示出来。 而真正发布作品的时候 trace()却不再输出。是最方便的调
试命令,trace()命令非常简单:
应用格式:
trace(expression:Object)
参数:expression 要显示的变量或者表达式。
下面我们使用 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(expression:Object)
var a=5
var b="欢迎大家来到爱国者安全网学习 AS"
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表示侧面积。
数据类型
我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输
入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序
都有一个共同特点;他们都需要处理数据.flash 中根据数据的处理方法的不同,对数据进行了
分类,他们是;数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义和空值。
计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所
以我们常说"变量是保存信息的容器" , 为了区别分不同类型的变量,就有了数据类型,变量有
多种数据类型,数据类型描述变量或动作脚本元素可以包含的信息种类,下面讲解常见的数据
类型.函数的值是由变量决定的,那么什么来决定变量呢?那是数据, 下面我们就说说 AS
中使用到的数据类型。AS 中的数据有两大类,一 类称之为原始类型(也叫初始类),另
一类叫做参考类型 (也叫引用类)。
原始类型数据分为字符串、数值和逻辑型三种,它们都有常量 值,能够为其所代表的元素
赋一个实际值。
参考类型数据包括影片剪辑和对象两种, 它们有一个可变的值, 包含了对元素实际值的引用。
此外还有两个特殊类型的数据:空值和未定义值。
字符串型(string) :字符串是诸如文字、字母、数字和标点符号等字符的序列。在动作脚
本语句中输入字符串的方式是将其放在单引号或双引号之间,字符串被当作字符,而不是变
量进行处理。例如“学习 Flash”“abcd”的等。还可以使用”+”等运算符对字符串进行操
作。
例如
trace("欢迎大家");
trace('来爱国者安全网学习');
trace("欢迎大家"+'来爱国者安全网学习');
数值型( (N umber) ):您可以使用加(+)、减(-)、乘(*)、除(/)、求模(%)、递增(++)和递减(- -)
等算术运算符来处理数字,也可使用内置的 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));
trace(typeof (my_mc));
trace(typeof (my_btn));
trace(typeof (txt2));
trace(typeof (Math.PI));
trace(typeof (3<1));
trace(typeof (System));
trace(typeof (stop));
显示对各类表达式使用 typeof 运算符的结果如下表所示。
[attach]1529[/attach]


       十四、运算符(一)
运算符表达式
运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作
数。例如,在语句“foo+3”中, “+”运算符会将数值文本的值添加到变量 foo的值中;foo
和 3 就是操作数。
用运算符连接变量或者常量得到的式子叫做“表达式” 。各种表达式用运算符连接在一
起还叫做表达式,例如:圆柱体表面积计算公式 2*Math.PI*r*r+2Math.PI*r*h。
其中“2”和“Math.Pi” (表示圆周率π)都是常数,而“r”和“h”分别表示半径和高,
是变量。 “+”和“*”分别表示加法运算和乘法运算,是运算符,这个式子就是表达式。
运算符的优先顺序
在同一语句中使用两个或多个运算符时, 各运算符会遵循一定的优先顺序进行运算, 例如加
(+),减(-)的优先顺序最低, (*),除(/)的优先顺序较高,而括号具有最高的优先顺序,当一
个表达式中只包含有相同优先级的运算符时,动作脚本将按照从左到右的顺序依次进行计
算;而当表达式中包含有较高优先级的运算符时,动作脚本将按照从左到右的顺序,先计算
优先级高的运算符,然后再计算优先级较低的运算符;当 表达式中包含括号时,则先对括号
中的内容进行计算,然后按照优先级顺序依次进行计算。
算术运算符
可以执行加法、减法、乘法、除法运算,也可以执行其他算术运算。Flash 中的算术运算符
及简单的用法如下图
[attach]1530[/attach]

加法运算实例
在场景中绘制三个动态文本,变量名分别为 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
表示,所以有的人就把取余运算叫做取模运算。
6. .2 2 赋值运算符
FLASH 用了大量的赋值运算符,可以使设计的动作脚本更简洁,下面列出了 FLASH 中使用
的赋值运算符。

[attach]1531[/attach]
赋值运算符原理
第 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 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
可以实现 mc的透明度慢慢从 100 减到 20。
       十五、变量(二)
比较运算符
[attach]1532[/attach]


用于比较表达式的值,然后返回一个布尔值(true 或 false)。这些运算符最常用于循环语句
和条件语句中。Flash中的算术运算符及简单的用法如表比较返回值
在舞台上绘制四个动态文本框,变量名分别为: m_txt1、m_txt2、m_txt3、m_txt4。再放入两
个按钮。按钮 1 上的 AS:
on (release) {
m1_txt = 1 == 2;
m2_txt = 1>2;
m3_txt = 1<2;
m4_txt = 1 != 2;
}
按钮 2 上的 AS:
on (release) {
m1_txt=""
m2_txt=""
m3_txt=""
m4_txt = ""
}
条件运算符
?:(条件)
格式:表达式式 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()];
}
逻辑运算符

[attach]1533[/attach]

逻辑运算符对布尔值(true 和 false)进行比较,然后返回第三个布尔值。在表达式中,用
户可以使用逻辑运算符来判断某个条件是否存在。逻辑运算符主要用在 if和 do while动作
中。有关逻辑运算符及其功能如表逻辑运算原理
说明:我们打开素材,播放状态下,点击按钮,观察逻辑运算的返回值,从而理解逻辑运算
原理。
控制小球运动
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”是不起任何作用的,但语名格式中,不能没
有它。