FLASH脚本5
发布时间:2020-12-15 18:02:35 所属栏目:百科 来源:网络整理
导读:5、FLASH脚本-变量、运算符(一)、变量(二)? ?? ?十三、变量 通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态 文本显示变量、输入文本输入变量,会使用调试命令 trace。了解 Flash中的数据类型. 认识变量 在日常生活中
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(expr ession:Object) 参数:expr ession 要显示的变量或者表达式。 下面我们使用 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 ession: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”是不起任何作用的,但语名格式中,不能没 有它。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |