AS入门教程基础篇

上传人:ta****u 文档编号:189697748 上传时间:2023-02-23 格式:DOCX 页数:35 大小:82.16KB
返回 下载 相关 举报
AS入门教程基础篇_第1页
第1页 / 共35页
AS入门教程基础篇_第2页
第2页 / 共35页
AS入门教程基础篇_第3页
第3页 / 共35页
点击查看更多>>
资源描述
AS 入门教程基础篇我写的这些教程,目的是希望初学FLASH的爱好者能 多动手,少提问。做过FLASH的爱好者 都知道,要做好一个 FLASH 动画, AS 是比不可少的。即使是几句简单的代码也能起到整个 FLASH 动画画龙点睛的作用。这里我只简单的介绍一下 AS 的基本常识。1祯:写在关键祯上面的AS.当时间轴上的指针走到这个关键祯的时候,就写在这个祯上面的AS 被触发执行了 .常见的例子有在影片结尾的祯上写上stop()等操作方法就是点选关键祯,然后打开 AS 面板.2按钮:不同于祯上面的AS,按钮上面的AS是要有触发条件的要把AS写在按钮上,操作方法是 点选按钮,然后打开AS面板例如:做一个按钮,放到主场景,点选按钮,然后打开AS面板,写入:on(release)stop();这里比祯动画多这些代码:on(release),整个翻译过来就是:当 (松开 )停止;红色的代码表示鼠标的触发事件之一,这里使用release松开,按钮的常用事件:release 松开presss 按下rollOver 鼠标进入按钮的感应区rollOut 鼠标离开按钮的感应区现在明白了 写在按钮上面的 AS 一定就是这种格式的 :on(事件)要执行的代码3.mc(电影剪辑)如果你看懂了上面的饿内容,那么写在MC上面的AS和写在按钮上面的大同小异,操作 方法就是 点选MC,然后打开动作面板,例如:onClipEvent(load)stop();同样的,MC也需要一个事件来触发AS的执行翻译这段就是:当剪辑(载入)停止红色代码同样表示一个事件.me的事件有下面这些:load载入,当MC出现的时候执行,也就是除非卸载这个MC,否则load事件内的代码只执行一次 unload卸载,当MC卸载的时候执行enterFram 存在的每个祯 在 MC 存在的每个祯都要执行一次代码 如果你的场景有 100 个祯,有个 MC从41祯开始出现到100祯才消失,那么这个MC上面的代码执行了 60次.mouseDown 按下鼠标 ,在场景内任何地方都算 .和按钮不一样的地方 . mouseMove 移动鼠标,只要移动鼠标就执行代码 mouseUp 松开鼠标同样你要明确:写在MC上的代码一定总是这种格式: onClipEvent(事件)代码看到这里,你就明白的写在祯 ,按钮 ,MC 的的代码有什么不一样了.AS 入门 语法篇首先要让大家明白的是:AS语法的大小写是敏感的.如:gotoAndPlay() 正确 gotoAndplay() 错误.我们要从开始养成编程的好习惯,如在每个语句后面都加上分号 ,有可能的话,尽量给复杂的语句 加上注释.注释的例子:/这里是个注释,但是只能有一行 /*这也是个注释,可以写很多行*/ 接下来,介绍几个类型的语法:1. 几个常用的控制场景的方法 .如:play();让时间轴的指针播放 stop();停止时间轴的指针在程序触发时候的那个祯 gotoAndStop();让指针跳转到某个祯,然后继续播放 gotoAndStop();让指针跳转到某个祯然后停止在那祯 nextFrame(); 往下走一祯 prevFrame(); 往前走一祯上面的都是方法.也就是大 括号里的代码,是事件的执行者2. 控制属性的语法:_x / 用来标识 目标 的 X 轴的坐标_y_alpha /(属性),用来标识目标的透明度_width_name上面的都是属性3. 控制语句流程的语法.如:f(条件)/条件满足 执行这里的代码else/条件不满足执行这里的代码for(i=0;i)/ 执行这里的代码 N 次while (条件)/当条件满足时一直执行这里的代码这些都是基本的语法,也是AS的基础4.其他方法和自己定义 的方法 这里我不能把所有的语法都一一列出来介绍,因为实在是太多了,具体可以参考 Flash 自带的帮 助手册。我们只能在以后的应用中慢慢熟悉。 这里,你有个基本概念就行了。到后面我会给每句 话都加上注释。AS 入门 对象篇虽然AS不是真正的面向对象的编程,但是它也有对象的概念这个概念贯穿整个AS的始终,所以 对 对象的理解,比对语法或其他的理解 更为重要.首先了解以下路径,做过HTML的朋友应该知道这个概念,我认为对路径的理解要深入,我初学的 时候就是磕在路径上.在讲路径前 ,有必要先讲一下 语法:举例说明,这里要表示房间里的桌子上的一本书 ,用语法这么 表示:房间桌子书如果要再仔细到书上的页面上的字,很显然:房间桌子书页面字看明白了吧?语法就是这么表示对象的节点 是父子的关系,前面是父 后面是前面父的子 现在我们开始说路径了哈,其中也要夹杂着对象的说明 ,例子:新建一个FLASH文件,然后创建一个MovieClip,mc命名为me,防在主场景里面,然后再创建一个 按钮,放在MC里面,然后从库里拖一个出来放在主场景,分别给这2个元素实例命名:MC-myMC button-myBtn现在我们假设主场景是房子,MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下: _root 房子_root.myMc 房子桌子_root.myMc.myBtn 房子桌子书这里的_root是FLASH的关键字,表示主场景的Timeline(时间线)这里的房子,桌子,书都是我们要理解的对象当你找到这个对象后,才能对对象进行操作,才能给对象施加方法比如,我现在要打扫房子,打扫就 是方法,但对象是房子,表达式是这样:房子打扫()如果你不能正确的表达房子这个对象 ,你的打扫也就 不能正确的实施了 * 说明:这里为什么要在 打扫后面加()呢?因为打扫是方法 不是对象,为了让FLASH知道这是个方法,我们必须加上(),要不 然FLASH会以为房子里有打扫这个东西(对象)呢.现在,我们可以很容易的对房间里的各个东西进行操作了 如: 房子打扫();房子.桌子.整理();房子.玻璃桌子 .打碎(); 房子.书桌.书.看();等等,相信你可以把他们翻译成AS 了吧?比如要把主场景停止播放,就是:_root.stop();要 MC 停止播放 :_root.myMc.stop();现在说相对路径,还是上面的例.假如给你下了一个命令 :修理房子里的红色的椅子.怎么表达呢?就 是:房子.红色椅子.修理();如果说修理你现在坐的这椅子 ,红色的?还是兰色的?这就要取决于你坐的哪个椅子了 .那么相对的 表达式就是:我坐的椅子.修理();这里为什么不这么写呢? 房子.我坐的椅子.修理();这样写是错的,因为我坐的椅子是不固定的 ,我 说不定把椅子搬到外面去坐,那这个表达式就错了 ,因为椅子根本就不在房子里面 .换过来用 FLASH 实例说明.现在我想让主场景下的 MYMC 在一开始就不要播放 ,而是先停止.那 你有什么办法捏?你的办法可能是在主场景放入这个 mc 的那个祯写上:_root.myMc.stop();这个是对的,但是一旦 myMc 的名字一变,你就得跟着改这句话了 .有没有办法不管这个MC怎么改,都会被我们同样的一句AS找到捏?当然可以,前提是你的AS必 须坐在这个MC上.进入Mc的编辑状态,在Mc的Timeline的第1祯些上this.stop();这里的this也是FLASH的关键字,这个this指AS所在的这条Timeline.现在不管你这个MC放哪里,命名是什么,反正坑顶会停下来.为什么捏?因为AS坐在MC上”. 这个this是相对路径的关键字之一.必须要仔细理解它.另一个关键字就是_parent.如果理解了 this. 那么这个_parent并不难理解.举例哈:房子(_root),桌子(mc_zhuozi),书(mc_shu)(括号内为mc实例名)他们的关系是:房子.桌子.书. _root.mc_zhuozi.mc_shu在mc_zhuozi的Timeline里面写_parent.打扫();意思就是打扫房间.在 mc_shu的timeline里面写:_parent.打扫();意思是打扫桌子._parent就是父级.桌子的_parent就是房子的timeline.书的_parent就是桌子的timeline.绝对路径 相对路径 就到这里哈,文字字段和组件1.常用指令下面介绍使用动作脚本动态创建文本框 .设置文本属性的几个常用指令 .MovieClip.createTextField()作用:动态创建文本框语法:my _mc.createTextField(instanceName,depth,x,y,width,heigth)参数:instanceName,指示新文本字段的实例名称,depth是一个正整数,指定新文本字段的深度;x是 一个整数,指定新文本字段的X坐标;Y是一个整数,指定新文本字段的Y坐标;width是一个正整数, 指定新文本字段的宽度;height是一个正整数,指定新文本字段的高度例如:_root.createTextField(textBox,1,50,50,200,100); textBox.text = 这是我的第一个动态创建文本 ?;这段程序代码的功能是:创建一个文本框,其实例名称为textBox,深度1,X50,Y50,宽度200,高度 100.TextField.removeTextField() 作用:删除由 createTextField 创建的文本字段.语法:my_text.removeTextField()例如:textBox.removeTextField();删除 textBox 文本.TextField._alpha作用:设置或获取由 my_txt 指定的文本字段的 ALpha 透明度值,有效值为 0(完全透明)到 100(完全 不透明),默认值为 100.语法: my_text._alpha例口:text1_text._alpha = 30;/ 将名为 text1_txt 的文本字段的_alpha 属性设置为 30/100.TextField.autoSize作用:控制文本字段的自动大小调整和对齐 .语法:m y_txt.autoSize例口:my_txt.autoSize = center;/ 将文本字段 my_txt 的 autosize 的属性值为center(中心).TextField.background作用:设置文字字段背景是否填充如果为true,则文字字段具有背景填充.如果为false,则文字字段 没有背景填充.语法:m y_txt.background例口:my_txt.background = false;/ 文本字段 my_txt 没有背景填充.TextField.border作用:设置文本字段是否有边框.如果为true,则文本字段有边框如果为false,则没有字段边框. 语法:m y_text.border例如:my_txt.border = true;/ 文本字段 my_text 有边框.动态文本应用实例:数字倒记时这里我们利用动态文本制作一个 1 0秒的倒记时器,影片中的数字自动从 10变为9,8,当变到0的时候停止,数字变化间隔 1 秒.步骤 1 :创建影片文档影片文档 250*200,其他都保持默认.保存影片文档为动态文本实例. fla.动作脚本入门 变量 函数 语法规范 现在我们来学习 AS 编程的基础知识,学习 AS 程序的一些基本结构。通过这一节的学习,我们 要从开始就养成正确阅读和书写 AS 程序的习惯。首先,我们一起来看一段定义在一个按钮上的小程序:on (release)var myNumber = 7;var myString = Flash Mx 2004 ActionScript;for (var i = 0;imyNumber;i+)trace(i);if (i+3 = 8)trace(myString);我们发现 AS 程序其实就是由一些命令 数字和一些符号组成的。当测试这个程序的影片,可以 看到这小程序输出的结果为:i是06的数值。1. 常量常量就是一种属性,指在程序运行中不会改变的量 .例如上面的程序代码中的数值 3.7.8和字符串 Flash Mx 2004 ActionScript 都是常量.逻辑常量true和False在编程的时候也经常用到2. 变量变量就是在程序运行中可以改变的量例如上面的例子中的i,就是变量,它从0 直变到6可以看 出,我们在编写程序 时往往需要 储存很多的信息,就需要变量来储存这些信息 Variables(变量):储存了任意数据类型的标识符 变量实际就是一个信息容器,容器本身总是相同的,但容器中的内容却可以修改 通过在影片播放 时修改变量中的值,然后判断某些条件的真假等例如,如果需要重复10次相同的命令,你就可以对 命令的自行执行次数进行记数,判断次数是否满10,满10次就终止变量可以存放任何数据类型,包括数字值如(myNumber).字符串值(myString).逻辑值对象或电影 剪辑等.储存在变量中的信息类型也很丰富,包括:url,地址用户名,数学运算结果事件发生的次数或按钮 是否被单击等变量可以创建修改和更新变量中储存的值可以被脚本检索使用在以下示例中,等号左边的变量 标识符,右边的则是赋予变量的值x = 5; name = Lolo;customer.address = 66 17th Street; c = new Color(mcinstanceName);变量由 2部分构成:变量名和变量的值,(1)变量名与规则 变量名必须一英文字母开头 变量名称中间不能有空格,象box sum就是一个错误的示范,如果是2个单词,可以在中间加下画线 符号.如I:box_sum.变量名称中不能使用除了_(下画线)以外的符号不能使用与命令(关键字)相同的名称,例如:var,new等以免程序出现错误(2) 变量的类型 变量的类型包括储存数值 .字符串或其他数据类型 .在FLASH中,可以不直接定义变量的数据类型当变量被赋值时,FLASH会自动确定变量的数据类 型.例如:X = 3;在表达式X=3中,FLASH将取得运算符右边的值,确定它是数值类型此后的赋值语句又可能改变 X的类型.例如X =HELLO语句可以将X的数据类型改为字符串值没有赋值的变量,其数据类型 为undefined(未知的,不明确的)AS会在表达式需要时自动转换数据类型.例如,当我们将一个值传递给Trace动作时,Trace会自动 将其值改变为字符串并发送,(输出湎板在包含运算符的表达式中,AS会在需要时转换数据类型例如:在和字符串连用时,加号 (+)运算符会将其他的运算项也转换成字符串 Next in line, number+7as 将数字 7转换成为字符串 7,然后填加到第 1个字符串的末尾,得到的结果是以下字符串 : Next in line,number7在调试脚本时,确定表达式或变量的数据类型是常用的手段。使用Typcof运算符就可以作到这 一点。例如:Trace(Typcof(VariableName);使用Number函数,可以把字符串转换为数字值。使用 String 函数 可以把数字值转换为字符串值。3)变量的作用域所谓变量的作用域,是指能够识别和引用该变量的区域 也就是变量在什么范围内是可以访问的 在 AS 中有 3 种类型的变量区域 :本地(局部)变量:在自身代码块中有效的变量(在大括号内)就是在声明它的语句块内(例如一个函 数体)是可访问的变量,通常是为避免冲突和节省内存占用而使用 时间轴变量:可以在使用目标路径指定的任何时间轴内有效 时间线范围变量声明后 ,在声明它的 整个层级(level)的时间线内它是可访问的全局变量:即使没有使用目标路径指定,也可以在任何时间轴内有效就是在整个的movie中都可以 访问的变量(4)声明和使用变量使用变量前最好使用Var命令先加以声名在声名变量的时候,一般要注意以下内容:*要声明常 规变量,可以使用 Set Varible 动作或赋值运算符(=),这 2种方法获得的结果是一样的。*要声明本地变量,可以在函数主题内使用Var语句。例如:var myNumber = 7;var myString =flash MX 2004 ActionScript; *要声明全局变量,可以在变量前使用 _global 标识符。例如:_global.myName = global;*要测试变量的值,可以使用trace动作将变量的值的发送到输出窗口。例如:trace(i) trace(mystring)就可以将变量i的值发送到测试模式的输出窗口中。也可以在测试的模式的调试器中检查和设置 变量值。如果要在表达式中使用变量,则必须先声明该变量。 如果使用了一个未声明的变量,则变量的值 将是 mdenned ,脚本也将产生错误。在脚本中,变量的值可以多次修改。在以下示例中,变量x被设置为15,在第2行中,该值被 复制到变量y中,在第3行中,变量x的值被修改为30,但是变量y的值仍然保持为15,这是 因为变量y不是引用了变量x的值,而是接受了在第2行传递的实际值15。var x=15;var y=x;var x=30;3.函数函数(function)是什么捏?函数就是在程序中可以重复使用的代码,你可以将需要处理的值或对 象通过参数的形式传递给函数, 然后由函数得到结果,从另一个角度说,函数存在的目的就是为 了简化编程的负担,减小代码量和提高效率。( 1 )系统函数所谓系统函数就是 FLASH 内置的函数。用户在编程的时候可以直接拿来使用。下面是一些常用 的系统函数。Boolean :转换函数,将参数转换为布尔类型。GetVersion :函数获取Flash play的版本号。Parselnt :数学函数,将字符串分析为整数。Escape:将参数转换为字符串,并以URL编码格式进行编码,在这种格式中,将所有非字母数 字的字符都转义为 %十六进制序列。IsFinite :数学函数,测试某数字是否为有限数。String:将数字转换为字符串类型。Eval :函数返回由表达式指定和变量的值。IsNN:数学函数,测试某数字是否为NaN (不是一个数字)。TargetPath :返回指定电影剪辑的目标路径字符串。Getproperty :返回指定电影剪辑的属性。Number :转换函数,将参数转换为数据类型。Unescape :对URL编码的参数进行解码所得到的字符串。GetTimer:影片开始播放以来经过的毫秒数。ParseFlost :数学函数,将字符串分析为浮点数。Object :转换函数,将参数转换为相应的对象类型。Array:转换函数根据参数构造数组(2)自定义函数除了系统函数 ,我们在编写程序时还需要自己定义一些函数,用这些函数去完成指定的功能。 在 FLASH 中定义函数的一般形式为:function 函数名称(参数 1,参数 2,。,参数 N) /函数体。既函数的程序代码假设我们要定义一个计算矩形面积的函数,可以这样: function areaOFBox(a,b)/ 自定义计算矩形面积的函数 return a*b;/ 在这里返回结果,也就是得到函数的返回值你自定义了函数以后,就可以随时调用并执行它了。 调用执行函数的一般形式为: 函数名称(参 数 1,参数 2,。参数 N);假设程序中我们要调用上面自定义的areaOfBox()函数,可以这样:area = areaOfBox(3,6);trace(area=+area); 函数就象变量一样,被附加给定义他们的电影剪辑的时间轴,必须使用目标路径才能调用它们。 此处还可以使用_global标识符声明一个全局函数,全局函数可以在所有时间轴内有效,而且不 必使用目标路径,这和变量很相似。4.语法规范(1)关键字:关键字是AS程序的基本构造单位,它是程序语言的保留字(reserved Words),不能被作为 其他用途(不能作为自定义的变量 ,函数,对象名).AS 中的关键字不是很多.break 跳出循环体 instanceof 返回对象所属的类 (class)case 定义一个 switch 语句的条件选择语句块new使用构造函数(consturctor)创建一个新的对象continue跳到循环体的下一项目return在函数中返回值default定义 switch 语句的默认语句块switch定义一个多条件选择语句块delete清除指定对象占用的内存资源this引用当前代码所在的对象else定义 if 语句返回为假时的语句块typeof返回对象的类型for定义一个循环var 声明一个本地变量 (Local Variable)function定义一个函数语句块void声明返回值类型不确定if定义一个条件语句块while定义一个条件循环语句块in在一个对象或元素数组中创建循环with定义一个对指定对象进行操作的语句块(2)运算符 运算符指定如何合并.比较或修改表达式中值的字符.也就是说通过运算来改变变量的值 .运算符所操作的元素被称为运算项例如:在以下语句中,加号(+)就是运算符,i和3就是运算项:i+3 运算符包括:*算术运算符:+(加).-减.*(乘)./(除).%(求余数).+(递增).-(递减).*比较运算符::(小于)、(大于)、=(小于或等于)、 =(大于或等于)。*逻辑运算符:&(逻辑和)1(逻辑或) !(逻辑非)下面是运算符优先级的列表 运算符的优先级,既几个运算符出现在同一表达式中时先运算哪一个 , 从上到下递减.运算符描述+元(Unary)加元(Unary)减按位(Bitwise)逻辑非逻辑非(NOT)not逻辑非 (Flash 4 格式)+后期(Post)递加后期(Post)递减( )函数调用 数组(Array)元素结构(Structure)成员+先期(Pre)递加先期(Pre)递减new创建对象delete删除对象typeof获得对象类型void返回未定义值乘/除% 求模(除法的余数)+加add字符串(String)连接(过去的&)减按位右移按位右移 (无符号 unsigned, 以 0 填充)小于大于=大于或等于lt小于 (字符串使用)le小于或等于 (字符串使用 ) gt大于 (字符串使用 )ge大于或等于 (字符串使用 )等于!=不等于eq等于(字符串使用)ne不等于 (字符串使用 )&按位(Bitwise)逻辑和(AND)按位逻辑异或(XOR)|按位逻辑或(OR)&逻辑和(AND)and逻辑和 AND (Flash 4)|逻辑或 ORor逻辑或 OR (Flash 4)?:条件赋值*=/=%=+=&=|=A=复合赋值运算多重运算(3)表达式在 AS 中最常见的语句就是表达式,它通常由变量名 .运算符及常量组成 .下面是一个简单的表达 式:X = 0; /左边是变量名(X),中间是运算符(赋值运算符=),右边是常量(数值0).由这个表达式 我们可以声明(declare) 一个变量,为下一步操作做准备 *算术表达式:用算术运算符(加.减.乘.除)做数学运算的表达式.例如:2*3*4*字符表达式:用字符串组成的表达式 .例如:用加号运算符+在处理字符运算时有特殊效果 .它可 以将2个字符串连在一起”恭喜过关,+Donna!得到的结果是恭喜过关,Donna!.如果相加的项目中只有一个字符串则FLASH会将另外一个项目也转换为字符串 *逻辑表达式:就是做逻辑运算的表达式。例如:13;返回值为false,既1大于3为假逻辑运算 符常用于讦动作的条件判断,确立条件是否成立.例如:if (x = 9) gotoAndPlay(15);这段代码的功能是当X与9比较结果为true时就跳转到15祯并开始播放 (4)代码书写格式我们在编写程序代码的时候 ,还要注意一些代码书写的格式 ,一些不起眼的细节问题往往是整个程 序问题的罪魁祸首*AS 每行语句都以;结束.长语句容许分多行书写 ,即允许将一条很长语句分割 2个或更多的代码 行,只要在结尾有个分号就可以了 .*字符串不能跨行,2 个分号必须在同一行 . *双斜杠后面是注释,在程序中不参与执行,用于增加程序的可读性 .*AS 是区分大小写字母的 .事件和事件处理函数凡是看过FLASH作品的朋友,都会为它绚丽多才的交互动画所倾倒交互功能使FLASH不仅仅 局限于演示型的动画设计 ,而更使之成为强大的交互程序设计平台 .在利用FLASH设计交互程序时,事件是其中最基础的一个概念所谓事件 就是软件或硬件发生的 事情,它需要应用程序有一定的响应 例如:一个小球在不停的跳动,如果点击停止按钮,那么小球就停止跳动那么整个的过程就蕴涵了 事件和事件处理的概念用鼠标单击停止按钮 就是一个事件,当这个事件发生时,马上有程序对它 响应(程序控制小球停止跳动)这时如果再单击播放按钮(又一个鼠标事件发生),则小球又开始跳 动(响应的事件响应程序控制小球)现在对事件和事件处理的概念有所了解了吧,光简单的了解还不行我们要通过对按钮对象的事件 和事件处理函数的详细分析,全面掌握FLASH程序设计中事件和事件处理函数的应用1.事件分类和处理事件的方法FLASH中的事件包括用户事件和系统事件2类用户事件是指用户直接交互操作而产生的事件, 例如鼠标单击或按下键盘键之类的事件系统事件是FLASH PLAY自动生成的事件,它不是用户 直接操作生成的例如 影片剪辑在舞台上第1次出现或播放头经过某个关键祯一般情况下,在以 下几种情况下会产生事件 :*当在时间轴上播放到某一祯时*当某个影片剪辑 载入或卸载时 *当单击某个按钮或按下键盘键时 为了使应用程序能够对事件做出反应 ,必须编写相应的事件处理程序 事件处理程序是特定对象和 时间关联的动作脚本代码例如:当用户单击舞台上的一个按钮时,可以将播放头前进到下一祯 FLASH 2004提供了 3种编写事件处理程序的方法 :*针对对象的on()事件处理函数*事件处理函数方法*事件侦听器下面我们就以按钮对象的事件为例 ,讨论这 3种编写事件处理程序方法的应用 2.on()事件处理函数是最传统的事件处理方法,它直接作用于按钮元件实例,相关的程序代码要编 写到按钮实例的动作脚本中.on()函数的一般形式为:on(鼠标事件)/此处是你的语句,这些语句组成的函数体来响应鼠标事件其中鼠标事件是事件触发器,当发生此事件时,执行后面大括号内的语句比如press就是一个常 用的鼠标事件,她是在鼠标指针经过按钮时按下鼠标时产生的事件 3事件处理函数方法事件处理函数方法是一种类方法,事件在该类的实例上发生时产生调用。例如:Button(按钮) 类定义 onPress 事件处理函数,只要按下鼠标就对 Button 对象调用该处理函数。 flashPlay 在响应 事件发生时自动调用事件处理函数。默认情况下,事件处理函数方法是未定义的。在发生特定事件时,将调用其相应的事件处理函数, 但应用程序不会进一步响应该事件。要让应用程序响应该事件,需要使用 function 语句定义一个 函数。然后将该函数分配给相应的事件处理函数。这样 只要发生该事件,就自动调用分配给该 事件处理函数的函数。事件处理函数由三部分组成:事件所应用的对象 .对象的事件处理函数的名称和分配给事件处理 函数的函数.事件 处理函数的基本结构为 :对象 .事件处理函数方法名称 = function () /你编写的程序代码 ,对事件作出反映(1)定义按钮实例名称 按照前面的方法,将小球动画文件打开,并且引用 2个按钮元件实例.分别单击2个按钮实例,在属性 面板中分别定义它们的实例名称为 :play_btn 和 stop_btn .(2)定义事件处理函数新建一个图层,并将它新命名为AS,选中这个图层的第1祯,在(动作)面板中定义这个祯的动作脚 本为:play_btn.onPress=function()play();stop_btn.onPress=function()stop();4.事件侦听器 事件侦听器让一个对象(称作侦听器对象)接收由其他对象(称作广播器对象)生成的事件。广 播器对象注册侦听器对象以接收由该广播器生成的事件。 例如,你可以注册按钮实例可以从文本 字段对象接收 onChanged 通知。这里需要说明的是,可以注册多个侦听器对象以从一个广播器 接收事件,也可以注册一个侦听器对象以从多个广播器接收事件。事件侦听器的事件模型类似于事件处理函数方法的事件模型,但有两个主要差别:u你向其分配事件处理函数的对象不是发出该事件的对象。u你调用广播器对象的特殊方法addListener(),该方法将注册侦听器对象以接收其事件。要使用事件侦听器,你需要用具有该广播器对象生成的事件名称的属性创建侦听器对象。然后, 将一个函数分配给该事件侦听器(以某种方式响应该事件) 。最后,你在正广播该事件的对象上 调用addListener(),向它传递侦听器对象的名称。事件侦听器模型的一般形式为:listenerObject.eventName = function( 参数)/定义侦听器对象事件函数/ 此处是你的代码;broadcastObject.addListener(listenerObject);其中 listenerObject 是指定侦听器对象的名称, broadCastObject 是名称, eventName 是事件名称。指定的侦听器对象(listenerobject )可以是任何对象,例如舞台上的影片剪辑或按钮实例,或者 可以是任何动作脚本类的实例。事件名称是在广播器对象(broadCastObject)上发生的事件,然 后将该事件广播到侦听器对象( listenerObject) ,侦听器对象的事件函数对事件作出反应。使用侦听器对象处理事件,可以使你的程序更加安全可靠。 有关侦听器对象应用的详细内容请参 阅本书第八章第三节的相关内容。 ( )5.按钮事件和 MC 事件on()处理函数处理按钮事件,onClipEvent()处理函数处理影片剪辑事件前面我们已经详细讨论了 on()处理函数处理按钮事件的方法,用onClipEvent()处理函数处理影片剪辑的方法类似,这里就不 再祥叙.下面我们完整地列举on()和onClipEvent()事件处理函数支持的事件.(1) .on()事件处理函数所支持的事件按钮可以响应鼠标事件,还可以响应Key Press(按键)事件.对于按钮而言,可指定触发动作的按钮 事件有7种:*press:按下鼠标时*release:事件发生在按下鼠标 接着松开鼠标时.*releaseOutside: 时间发生在按下鼠标,接着把鼠标移动按钮之外松开时 .*rollOver: 事件发生于鼠标滑入按钮时 .*rollOut: 事件发生于鼠标滑出按钮时 .*dragOver:事件发生于按下鼠标不松手 鼠标滑入按钮时*dragOut:十发生于按下鼠标不松手 鼠标滑出按钮时.*keyPress: 事件发生于用户按下指定的按键时 .(2) onClipEvent() 实践处理函数onClipEvent() 事件处理函数使用的一般形式为 :onClipEvent(movieEvent)/次处是你的语句,用来响应事件其中movieEvent是一个事件”触发器当事件发生时,执行该事件后面大括号中的语句.对影片剪 辑而言,可指定的触发事件有 9 种,分别是:*剪辑 3一旦被实例化并出现在时间轴中时,即启动此动作。*在时间轴中删除影片剪辑之后,此动作在第 l 祯中启动。在向受影响的祯附加任何动作之前, 先处理与Unload影片剪辑事件关联的动作。*enterFrame:影片剪辑祯频不断触发的动作,首先处理与enterFrame剪辑十关联的动作,然后才 处理附加到受影响祯的所有祯动作。*mouseMove:每次移动鼠标时启动此动作。_xmouse和_ymouse属性用于确定当前鼠标位置。 *mouseDown:按下鼠标左键时启动此动作。*mouseUp:当释放鼠标左键时启动此动作。*keyDown:当按下某个键时启动此动作。*keyDown:当释放某个键时启动此动作。*data:当在loadVariables()或loadMovie()动作中接收数据时启动此动作。当与loadVariables()动作 一起指定时,data时间只在加载最后一个变量时发生一次。当与loadMovie()动作一起指定时, 获取数据的每一部分时, data 事件都重复发生。使用 Random 函数创建随机数Random 函数在 FLASH 里是非常有用的,可以生成基本的随机数,创建随机的移动,以及随机 的颜色和其他更多的作用,在下面这个例子中当你每按下一次按钮就会显示一个从 100 到100 的随机数。这个教程将解释如何做出这个例子以及如何利用 random 函数产生其他不同的结果。 基本的 RANDOM 函数如下:Math.random();可以产生出 01之间的任意小数,例如 0.010255879 或0.35987466,有几个其他的函数可以用来 改变产生的数字 ,从而更好的在你的影片中使用 :Math.round();Math.ceil();Math.floor();这几个函数都是用来取得整数的 ,Math.round(); 是采取四舍五入式取得最接近的整数 .Math.ceil(); 是向上取得一个最接近的整数,Math.floor();是向下 取得一个最接近的整数结合这些函数.你就可以这样写 :Math.round(Math.random();这个表达式可以生成一个 0.0和1.0之间的一个数,然后四舍五入取得一个整数.这样所生成的数字 就是0或1。这个表达式可以用在各有50/100的可能的情况下,例如抛硬币,或者true/false指 令。*10 是将你所生成的小数乘以 10,然后四舍五入取得一个整数: Math.round(Math.random()*10); 要创建一个 1 到10 之间的随机数,可以这样写: Math.ceil(Math.round()*10;因为 Math.ceil 向上取值,所以不会产生 0。要创建一个 5 到20 的随机数可以这样写: Math.round(Math.random()*15)+5;也就是说,如果要创建X到Y的随机数,就可以这样写:Math.round(Math.random()*(y-x)+x;x和y可以是任何的数值,即使是负数也一样。要制作上面的那例子,首先要创建一个按钮符号,拖到主场景中,然后创建一个新的动态文本框。 赋予动态文本框的变量名为“display.创建的工作到此结束,下面填加脚本。选中按钮,打开 AS 窗口,输入下面的代码:on (release) display = Math.round(Math.random()*200)-100;完成了。下面测试影片,你会注意到代码中的值遵循了那个公式。如果 X = -100, Y = 100 ,那 么 Y-X=200, +X = -100.随机数在FLASH中还可以有很多种不同的应用.要让一个movieclip在随机的屏幕上不同的位置 上出现,显示的位置在0到200之间,可以这样写,注意movieclip的实例名为bob.bob._x = Math.round(Math.random()*200);bob._y = Math.round(Math.random()*200);或者随机的控制 movieclip 的大小(0 到 100之间):bob._width = Math.round(Math.random()*100);bob._height = Math.round(Math.random()*100);也可以随机的载入一个movieclip,如果你的movieclip的命名是bobl,bob2:, 直到bob5,我们 可以这样写: i = Math.ceil(Math.random()*5);attachMovie(bob+i,fred+i,l);运行这个代码以后。就会随机的载入一个movieclip,例如bob3,放在level 1 ,赋予实例名为fred3。基本命令和程序结构控制( 1)前面我们学习了 AS的基础知识,相信已经对AS的编程方法,基本概念以及语法规范等有了一 点的认识。本节对AS的基本命令和程序结构控制进行研究,逐步的深入了解 AS的基本命令和 程序的基本结构,学习自己编写简单的程序脚本,从而实现动画的交互性。1. 时间轴控制命令(1) .gotoAndPlay一般形式:gotoAndPlay(scene,frame);作用:跳转并播放,跳转到指定场景的指定祯,并从该祯开始播放,如果没有指定场景,则跳转到当前 场景的指定祯 .参数:scene,跳转至场景的名称;frame,跳转至祯的名称或祯数. 有了这个命令,我们可以随心所欲的播放不同场景 ,不同祯 的动画. 例如: 当你点击被附加了 gotoAndPlay 动作按钮时,动画跳转到当前场景的第 16祯并且开始播放: on(release)gotoAndPlay(16);例如,当你点击被附加 gotoAndPlay 动作按钮时,动画跳转到场景 2第 1 祯并且开始播放: on(release) gotoAndPlay( 场景 2,1);(2) .gotoAndStop一般形式为 :gotoAndStop(scene,frame);作用:跳转并停止播放,跳转到指定的场景的指定祯 并从该祯停止播放,如果没有指定场景,则将跳 转到当前场景的指定祯 .参数:scene跳转到场景的名称.frame跳转至祯的名称或数字.(3) nextFrame()作用:跳至下一祯并停止播放. 例如: 点击按钮,跳至下一祯并停止播放 :on(release) nextFrame();(4) .prevframe() 作用:跳到前一祯 并停止播放. 例如:点击按钮,跳到前一祯 并停止播放. on(release)prveFrame();(5).nextScene() 作用:跳到下一场景 并停止播放 : on(release)nextFrame();(6)prevScene()作用:跳到前一场景 并停止播放 .(7)play()作用 :可以指定电影继续播放 .在播放电影时,除非另外指定,否则从第1祯播放如果电影播放进程被goto(跳转)stop(停止)语句停 止,则必须使用 play 语句才能从新播放 /(8) stop () 作用:停止播放当前的电影,该动作最常见的运用是使用按钮控制电影剪辑 . 例如,我们需要某个电影剪辑在播放完后停止而不是循环播放 ,则可以在电影剪辑的最后一祯加 stop(停止播放电影)动作.这样当电影剪辑中的动作播放到最后一祯时,播放就立即停止(9) stopAllSound()作用:使当前播放的所有声音停止播放,但是不停止动画的播放.要说明一点,被设置的流式声音将 会继续播放. 例如 :on(release)stopAllSounds();当按钮被点击时,电影中的声音将停止播放.2. 浏览器和网络控制命令(1) fscommand 命令制作完成的FLASH影片通常都是在FLASH播放器中播放,控制FLASH播放器的播放环境及播 放效果 是制作者经常要解决的问题,比如,怎么使影片全屏播放.怎样在影片中调用外部程序等. fscommand命令可以实现对影片浏览器,也就是Flash Player的控制。另外,配合JavaScript脚 本语言, fscommand 命令成为 Flash 和外界沟通的桥梁。fscommand 命令的语法格式如下 :fscommand(命令,参数);fscommand命令中包含2个参数项,一个是可以执行的命令,另一个是执行命令的参数.fscommand 可以执行的命令和参数命令参数 功能说明quit没有参数 关闭影片播放器fullscreen true or false 用于控制是否让影片播放器成为全屏播放模式 .true 为 是false 为不是allowscale true or false false 让影片画面始终以 100%的方式呈现,不会随着播放器 窗口的缩放而跟着缩放;true则正好相反showmenutrue or false true 代表当用户在影片画面上右击时,可以弹出全部命令的右键菜单, false 则表示命令菜单里只显示“About Shockwave” 信息。exec应用程序的路径从Flash播放器执行其他应用软件trapallkeys true or false 用于控制是否让播放器锁定键盘的输入, true 为是,false为不是。这个命令通常用在 Flash 以全屏幕播放的时候,避 免用户按下 Esc 键,解除全屏幕播放。(2) getURL 命令 一般形式: GetURL(URL,Window,method);作用:事件添加超级链接,包括电子邮件。 例如:如果要给一个按钮附加超级链接, 使爱好者在点击时直接打开 “闪客起航”的主页,则可以 在这个按钮上加如下的动作脚本:on(release) getURL( ); 如果要附加电子邮件炼接,可以这样: on(release)getURL( mailto:abc );(3) loadMovie 和 unloadMovie 载入和卸载影片命令 由于交互的需要,我们常常在当前电影不停止的情况下, 播放另外一个电影或是在多个电影间自 由切换时,这时就会用到 loadMovie 和 unloadMovie 命令, loadMovie 命令载入电影,而 unloadMovie 则可以卸载由 loadMovie 命令载入的电影。如果没有 LoadMovie 动作,则 Flash 播 放器只能显示单个电影(SWF)文件,然后关闭。LoadMovie 使用的一般形式为:LoadMovie ( URL,level/target,variblesl ); URL:要载入的swf文件、jpeg文件的绝对或相对URL地址。相对地址必须是相对于级别上的 swf文件。该URL必须和当前电影处于相同的子域中。要在使用loadMovie,则所有的swf文件 都必须存储在相同的文件夹中,文件名前面不能有文件名称或磁盘标识符。Target:目标电影剪辑的路径。目标电影将被载入的电影或图象所代替。必须指定目标电影剪辑或 目标电影的级别。二者只选其一。Level :指定载入到播放器中的电影剪辑所处的级别整数。Varibles :可选参数,如果没有要发送的变量,则可以忽略该参数。 当使用 LOADMovie 动作时,必须指定目标电影剪辑或目标电影的级别。 载入到目标电影剪辑中 的电影或图象将继承原电影剪辑的位置 .旋转和缩放属性.载入图像或电影的左上角将对齐原电影 剪辑的中心点。另外,如果选中的目标是_root时间轴,则图像或电影剪辑对齐舞台左上角。 例如,以下是loadMovie语句被附加给导航按钮。在舞台上有一个看不见的电影剪辑,其实例名 称为daohang ,loadMovie动作将使该影片作为目标参数载入SWF文件。On (release) LoadMovie(daohang.swf,_root.shanke);下面是可以载入和当前SWF文件相同路径的图像:LoadMovie(“image45.jpg”, “ourMovieClip” );使用 UnloadMovie 可以从播放器中删除已经载入的电影或电影剪辑。 UnloadMovie 命令使用的一 般形式为: UnloadMovie(level/target);要卸载某个级别中的电影剪辑,需要使用level参数,如果要卸载已经载入的影片剪辑,则可以 使用 target 目标路径参数。on (prass)unloadMovie(_root.mymovie);loadMovieNum( movie.swf,4);上面着段程序代码的功能是,卸载主时间轴上的影片剪辑 mymovie(影片剪辑名字),然后将 movie.swf
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 机械电气


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!