资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章 动画制作与,Flash,脚本基础,7.1 计算机动画研究的内容,7.2 计算机动画的应用,7.3,ActionScript,简介,7.4,ActionScript,语法规则,7.5 数据类型、变量、表达式和函数,7.6 一般对象属性,7.7 常用交互动作命令,7.8 内置类,7.9 综合实例,动画制作指的是用计算机生成一系列可供实时演播的连续画面的技术,即所谓的计算机动画技术,计算机动画是使用计算机作为工具来产生动画的技术,7.1 计算机动画研究的内容,1. 运动控制方法,2. 动画描述模型与动画语言,3. 中间画面的生成技术,4. 三维动画中物体造型技术,5. 动画绘制技术,运动控制方法,计算机动画中用于控制动画物体随时间而运动控制模型主要有:运动学方法、物理推导方法、随机方法、行为规则方法、自动运动控制方法等。,常用的三类主要的运动控制模型依次是几何模型、物理学模型和行为模型,运动学方法,这是传统的动画技术,运动通过几何变化(包括旋转、缩放、位移、切变)来描述,物理推导方法,应用物理定律推导物体的运动,运动是用物体的质量、惯量、作用在物体的内部外部力力矩以及运动环境中其他物理性质来计算的,随机方法,它是描述不规则的随机运动所采用的,在造型和运动过程中使用随机扰动的一种方法,主要包括分形技术、粒子系统等方法,用于模拟山形成、树生长、云飘运动、火燃烧、弹药爆炸、风吹草动等不规则的运动和变化,行为规则方法,使用一组行为规则,确定每步运动要执行的动作,自动运动控制方法,基于合成角色的动画系统,运动控制将使用人工智能、机器人学技术自动执行,2. 动画描述模型与动画语言,对动画描述较有影响的描述模型有面向对象方法、角色理论、记号系统、时间轴描述、基于时序算子的描述、基于知识的描述等,基于动画描述模型开发的动画描述语言主要有三类:,(1)记号语言,(2)通用语言,(3)图形语言,(1)记号语言,记号语言简单直观,一般提供编码、求精和动画过程,编码任务可通过一种智能的记号编辑器来完成。,(2)通用语言,在通用程序设计语言中嵌入动画功能是一种常用的方法,语言中变量的值可用作执行动画程序段的参数,(3)图形语言,文本语言的缺点是不能可视地观察脚本的设计效果,目前大多数实用的动画系统都提供了图形形式动画语言支持可视的设计方式,这种语言将动画中场景的表示、编辑、表现同时显示在屏幕上。,3. 中间画面的生成技术,动画的中间画面的生成技术主要有三种途径,即关键帧方法、算法生成和基于物理的动画生成。,(1)关键帧方法,它是基于动画设计者提供的一组关键帧、通过插值自动产生中间帧的技术。,分为基于图像的关键帧动画和参数化的关键帧动画。,(2)算法生成,动画物体的运动是基于算法控制和描述的,给定时刻物体的参数按照给定的物理定律改变,可以以解析形式定义或使用复杂的微分方程定义,通过求解得到某一时刻画面的物体位置参数。,算法动画可体现真实性和虚幻性两重特点。,(3)基于物理的生成,它是基于物体造型、应用物理定律以及基于约束的技术来推导和计算物体随时间运动或变化的一种技术。,4. 三维动画中物体造型技术,在三维建模动画里,计算机不仅仅是一个辅助工具,计算机可方便而精确地表示人类难以表示的三维透视画面,动画中物体表示可分为三个层次:,(1)线框:物体由一系列线框表示;,(2)表面:物体由一系列面素(多边形、代数曲面、曲面片)表示;,(3)体:物体看作一系列体素组成或看作三维空间的包围部分,三维动画中物体造型技术,曲面造型最通用的技术是通过多边形集合来描述曲面。,实体造型能完全、精确、有效地表示三维物体,并且十分符合人们在几何形体构造时的思维方式。,人体造型是最困难及最富挑战性的一个课题。常用的人体造型方法有棍状模型、表面模型、体模型。,5. 动画绘制技术,动画绘制是动画制作的关键步骤,绘制技术的好坏直接影响着动画的效果,真实感图形绘制技术是计算机图形学研究的一个重要内容,有代表性的常用的光照模型有,Phong,模型、,Cook-Torrance,模型、,Whitted,模型等,7.2 计算机动画的应用,动画应用主要分为面向影视制作和应用和面向模拟的应用,面向影视制作的应用不强调画面的真实性,只追求观赏性和趣味性,其中角色的运动可以有些虚幻,但绘制技术要求较高,能模拟出各种真实感效果,面向模拟的应用着眼于各种真实问题的仿真研究,它追求数据的正确性和结果的可信性以及能使各种以前仅能得到大批数据的科学试验可视化,这类动画对绘制效果没有前者要求的高。,计算机动画主要的应用领域,(1)影视制作,(2)广告制作,(3)教育领域中的辅助教学,(4)科研领域,(5)工业领域,(6)视觉模拟,(7)娱乐行业,7.3,ActionScript,简介,7.3.1,ActionScript,概述,7.3.2 如何编辑,ActionScript,脚本,7.3.1,ActionScript,概述,Macromedia Flash MX 2004,和,Flash MX Professional 2004,是具有专业水准的动画创作工具,结合,ActionScript,2.0,您可以开发出与用户的交互的,web,产品,Flash MX 2004,ActionScript,特点:,(1),ActionScript,能够控制,Flash,动画的播放行为和对象的属性。,(2),ActionScript,是一种面向对象的编程语言,它的风格和,JavaScript,语言相类似。,(3),ActionScript,可以使用自定义函数。,(,4,)支持,XML,和,XMLSocket,。,ActionScript,提供了,XML,和,XMLSocket,对象来和后台程序进行交互。,7.3.2 如何编辑,ActionScript,脚本,在,Flash,中要使用,ActionScript,有两种方式,一种是直接在,Flash,中写入,ActionScript,程序段,另一种是在,Flash,中包含引入,*.,as,文件(脚本文件)。,要在,Flash,中写入,ActionScript,程序,就要在“动作,-,帧面板”中进行编辑。, 将新项目添加到脚本中:通过命令列表,以选择的方式添加。, 查找:在脚本中查找对象。, 替换:在脚本中替换对象。,插入目标路径:用于在脚本中插入目标路径。在插入目标路径对话框中,用户在文本框中输入路径,同时可以设置该路径是绝对路径还是相对路径。, 语法检查:检查用户输入的脚本是否存在语法错误。, 自动套用格式:将用户输入的语句套用系统默认的格式,主要是缩进。, 显示代码提示:显示输入命令的语法格式,以作提示用。, 脚本参考:用于激活帮助面板,用户可以从中获取所选中命令的帮助信息。, 调试选项:在选定的脚本处插入断点或删除断点,可以在单击此按钮出现的下拉菜单中选择相应选项,选项有设置断点、删除断点、删除所有断点3项。, 视图选项:设置输入脚本语句的显示模式,选项有查看,Esc,快捷键、查看行号、自动换行3项。,7.4,ActionScript,语法规则,7.4.1 几个术语,7.4.2 语法规则,7.4.3 简单语法结构,7.4.1 几个术语,动作:,动作是命令一个动画在播放时做某些事情的一些语句。例如,,gotoAndPlay,命令,2. 事件:,动画播放时发生的动作。例如,单击按钮,3. 事件处理函数:,管理事件的特殊动作。,4. 实例:,实例是属于某个类的对象。类的每个实例均包含该类的所有属性和方法。,5. 实例名称:,是脚本中用来指向影片剪辑实例和按钮实例的唯一名称。例如,库中的元件名称可以是,Counter,,,在动画中可将该元件的实例命令为,Ct_mc,。,7.4.2 语法规则,1. 注释:,“/” 表示整行注释;,“/*”到“*/”之间的是段落注释。,2. 语句,ActionScript,中每个完整的语句以分号“;”结束,使用大括号“ ” 对多条语句进行组织形成一个语句块。如:,on(release),_X=100;,_Y=200;,语法规则(续),3.,关键字,是有特殊含义的保留字。例如,,root,就是一个关键字,那么我们就不能将给一个演员取名字叫,root,,2004中所有关键字表,break,case,class,continue,default,delete,dynamic,else,extends,for,function,get,if,import,implement,in,instanceof,interface,intrinsic,new,private,public,return,set,static,switch,this,typeof,var,void,while,with,语法规则(续),4. 常量:,常量也就是常数。比如,key,是针对键盘的一个对象,,key,的属性都是常量,,key.ENTER,就代表回车键。,5. 点(.):,它的作用通常两个。第一,用来定位, 如_,root.,mcs,就是根影片级别上的一个演员,mcs,。,第二,用来访问对象的属性、调用对象方法等。,6. 函数:,可以理解为完成特定任务的一段代码,可以向其传递参数并能够有返回值。有些函数由系统提供,你可以直接调用,例如,,getProperty,函数用于传送属性名和电影剪辑实例名,然后返回这些属性和值。,getVersion,函数返回当前正在播放动画的,Flash,播放器的版本。有些函数需要自己定义,然后才能调用。,语法规则(续),7. 类:,可用于创建新对象类型的数据类型,比如,,math,就是个类。,8. 构造函数:,用于定义类的属性和方法的函数。,9. 标识符:,用于表示变量、属性、对象、函数或方法的名称。给标识符取名字时,它的第一个字符必须是字母、下划线或美元符号,其后的字符除字母、下划线或美元符号外,还可以是数字字符。,ActionScript,中的标识符包括关键字对大小写敏感。,表7.,2 是,支持自动代码提示的后缀,语法规则(续),10.路径:,路径是为了正确引用,Flash,中的各个不同的对象,对对象进行定位。,路径分为:绝对路径和相对路径。绝对路径就是从根开始。如,,_,root-MC1,,,相对路径以某对象做参照对应的路径。相对路径看自己层是,this,,,上层的是,_,parent,。,表示路径时常用点运算符,如:引用对象,MC2,写成 _,parent.MC2。,7.4.3 简单语法结构,ActionScript,的语法从整体上来看借鉴了许多面向对象语言的优点,和现在流行的,C+/Java,非常类似,1,判断句式,2,循环句式,3.,控制循环,1,判断句式,ActionScript,的判断句式和,C+/Java,等高级语言的几乎完全一致,其语法为:,if (,条件), 条件为真时执行的语句 ,else,条件为假时执行的语句,如:,if (a5) ,trace(The value of variable a is bigger than 5 .);,else ,trace(The value of variable a is not bigger than 5.);,2,循环句式,在,ActionScript,中,共有三种循环句式,它们是:,for(,初始化;条件;递进) 循环体,while(,条件) 循环体,do ,循环体,while(,条件),(1),for,循环,for,循环是最常用的循环方式,在它的括号中用分号隔开了三个部分,如:,for (i=1;i10;i+),trace(i);,(2),While,循环,while,循环,当条件成立时执行循环体中的语句,条件的判断在循环之前。如:,i=1;,while (i10),trace(i);,i+;,(3),dowhile,循环,dowhile,循环,当条件成立时继续执行循环体中的语句,条件的判断在循环体之后,也就是说,循环体至少被执行一次(即使条件不成立,因为条件是在执行完循环体中的语句后才进行判断的)。如:,i=1;,do ,trace(i);,i+;,while(i10);,3.,控制循环,在循环中,还可以使用,break,和,continue,两条指令,用来控制循环。,(1),break,中断循环,执行后跳出循环执行循环外的语句。如:,for (i=0;i100;i+) if (i= =10) break;,trace (i);,(2),continue,中断一次循环,当前的循环被中断,回到循环的开始部分继续下一次循环。如:,for (i=0;i100;i+) if (i=10) continue;,trace (i);,7.5 数据类型、变量、表达式和函数,7.5.1 数据类型,7.5.2 变量,7.5.3 运算符和表达式,7.5.4 函数,7.5.1 数据类型,ActionScript,提供的数据类型有字符串类型、布尔值类型、对象、影片剪辑、,null,类型、,undefined,类型,1.,字符串类型,字符串是诸如字母、数字和标点符号等字符的序列,一定要用单引号或者是双引号括起来。比如:,”,我喜欢,Flash”,是个字符串。两个字符串可以用串连接运算符“,+,”进行连接,如,”,我喜欢,”+”,flash”=”,我喜欢,flash”,。,另外,,ActionScript,还有一种特殊的字符,称为转义字符,用“,”开始的表示的特殊字符,如“,n,”,代表换行符。,2.,数值类型,数值数据类型是双精度浮点数,是数学上的整数、实数,可以进行,+,、,-,、,*,、,等运算。,3.,布尔类型,布尔值是,true,或,false,中的一个。动作脚本也会在适当时将值,true,和,false,转换为,1,和,0,,或者是成立不成立等。,4.,对象类型,对象,就象一个“黑匣子”,里面有对象自己的“属性”和“方法”,“属性”就是它的特征,“方法”就是它可以做的事情,把属性和方法包装在一起就是个对象,画,sin,曲线,就用到了,Flash,内置,Math,对象的,sin,方法。,5.,MovieClip,影片剪辑是,Flash,应用程序中可以播放动画的元件。,它是唯一引用图形元素的数据类型。,6.,Null,和,Undefined,空值数据类型只有一个值,即,null。,此值意味着“没有值”,即缺少数据。,Undefined,是未定义的数据类型,也只有一个值,即,undefined,,它用于尚未分配值的变量。,注意区别开。,7.5.2 变量,变量就是盛放数据的容器。每个容器可以放不同的数据,每个容器必须有个名字。,根据变量的作用范围,即能够识别和引用该变量的区域,简单的叫作用域,变量有以下3种:,1. 本地变量,就是仅仅在所在的代码块中可用的变量。比如我们定义2个变量做循环变量,可以这样定义,var,i,j; ,,后面我们介绍的函数体内的变量一般是这个类型。,2. 时间轴变量,时间轴变量是可用于该时间轴上的任何脚本,应用时注意3点:一是用前要初始化,二是其他时间轴引用要加路径,三是只能是定义后的时间轴应用。比如你在第10帧定义了变量,var,name=”,张三”;,那么你想在第5帧调用,name,就是未定义的变量。,3. 全局变量,全局变量任何时间轴都可以使用的变量,不需要路径的。但仍然需要注意,在没有定义前的调用都是非法的。定义格式跟前面的,2,类变量不同,不能用,var,,,必须加个,_,global,,,比如定义全局变量,myname,就应该这样:,_,global.,myname,;,。,7.5.3 运算符和表达式,表达式是用于为变量赋值的,是由运算符和变量组成。,表达式分三种类型:数值表达式、逻辑表达式和字符表达式。,1. 数值运算符,操作符,操作名称,结果类型,+,加,数值,-,减,数值,*,乘,数值,/,除,数值,%,取模运算(除后的余数),数值,+,加1,数值,-,减1,数值,2.,比较运算符,操作符,操作名称,结果类型,=,等于,布尔值,大于,布尔值,=,大于等于,布尔值,3. 字符串运算符,+,运算符在处理字符串将两个字符串操作数连接起来。,比较运算符,、,=,、,和,=,在处理字符串时比较两个字符串,以确定哪一个字符串按字母数字顺序排在前面。,4.,逻辑运算符,操作,操作的意义,&,逻辑与(相当于,and,操作),|,逻辑或(相当于,or,操作),!,逻辑非(相当于,not,操作),5.,赋值运算符,操作,说明,=,赋值,+=,加之后再赋值(,x+=5,相当于,x=x+5),-=,减之后再赋值(,x+=test,相当于,x=x+test),*=,乘之后再赋值(,x*=10,相当于,x=x*10),%=,取模之后再赋值(原理同上),/=,除之后再赋值(原理同上),=,位右移然后赋值(原理同上),=,位右移多出部分补零然后赋值(原理同上),=,位异或运算后赋值(原理同上),|=,位或运算后赋值(原理同上),&=,位与运算后赋值(原理同上,6. 数组访问运算符,可以使用数组访问运算符 () 来访问内置或自定义的动作脚本对象属性,包括影片剪辑的属性。对于数组可以动态地设置实例与变量。,如,var,name= new Array();,name“mc” + i ;,中的表达式被求值,其结果在,mc,中计算过后被作为的名字变量使用。,7.5.4 函数,由一个或若干个变量按照一定的法则决定另一个变量的值,这种对应关系就叫做函数。,2004提供了5种类型的系统函数,它们分别是通用函数、数值类函数、字符串类函数。,1. 通用函数,eval,:,获取某一变量的值,或者是返回某一对象。,GetTimer,:,获取计算机的系统时间。,False:,获得布尔非值。,True:,获得布尔真值。,2. 数值类函数,int,:,把十进制数值强制转换成整数,即取整。,Random:,产生0到用户指定的数之间的随机数。,3. 字符串类函数,substring,:,截取字符串中的子串。,Length:,返回字符串的长度。,Ord,:,将字符转换成,ASCII,码。,Chr,:,将,ASCII,码转换成相应字符。,mbsubstring,:,截取多字节字符串中的子串。,Mblength,:,返回多字节字符串的长度。,Mbord,:,将多字节字符转换成相应,ASCII,码。,Mbchr,:,将,ASCII,码转换成相应多字节字符。,7.6 一般对象属性,在,Flash,中,常用到的对象都是图形元件(,Graphics Symbol,),或影片剪辑(,Movie Clip,),等物件实例化(,Instance,),后形成的。,这种对象的数据类型属于前面所讲的实例型。由于都是实例型对象,所以其原型(,ProtoType,),是一样的。,它们从同一个原型处继承相同的属性和方法。所以对于这些对象来说,它们有着许多共同的基础属性和方法。,实例型对象所共有的属性的列表,属性名,定 义,_,alpha,透明度,以百分比的形式表示,100%为不透明,0%为透明,_,currentframe,当前,MovieClip,实例所播放的帧序号,_,droptarget,返回最后一次被鼠标拖曳的,MovieClip,或,GraphicsSymbol,实例的名称,_,focusrect,当使用,Tab,键切换焦点时,按钮符号实例是否显示黄色的外框,默认显示黄色的外框,当设置为0时,将以按钮符号的,Up,姿态来显示,_,framesloaded,当前已经有多少帧动画被下载到了用户的客户端,_,height,MovieClip,或,GraphicsSymbol,实例的高度,以像素为单位,_,highquality,Flash,动画的显示质量设置:1为低,2为高,3为最好,_,name,返回,MovieClip,或,GraphicsSymbol,实例的名称,_,quality,返回当前,Flash,动画的播放质量,_,rotation,MovieClip,或,GraphicsSymbol,实例相对于垂直方向旋转的角度,_,soundbuftime,Flash,中的声音在播放之前要经过预下载然后播放,这个属性说明预下载的时间,实例型对象所共有的属性的列表(续),_,target,用于指定,MovieClip,或,GraphicsSymbol,符号实例精确的字符串,在使用,tellTarget,时常用到,_,totalframes,返回整个动画或,MovieClip,或,GraphicsSymbol,实例在时间线上所有帧的数量,_,url,返回该.,swf,文件的完整路径名称,_,visible,设置,MovieClip,或,GraphicsSymbol,实例是否显示,1为显示,0为隐藏,_,width,MovieClip,或,GraphicsSymbol,实例的宽度,以像素为单位,_,x,MovieClip,或,GraphicsSymbol,实例的中心点与其所在舞台的最左侧之间的水平距离,,MovieClip,或,GraphicsSymbol,实例在移动的时候,会动态地改变这个值,单位是像素,_,xmouse,返回鼠标指针相对于舞台最左侧的水平距离,_,xscale,MovieClip,或,GraphicsSymbol,实例相对于其原样的实际宽度的百分比,_,y,MovieClip,或,GraphicsSymbol,实例的中心点与其所在舞台的最上端之间的垂直距离,,MovieClip,或,GraphicsSymbol,实例在移动的时候,会动态地改变这个值,单位是像素,_,ymouse,返回鼠标指针相对于舞台最上端的垂直距离,_,yscale,电影片断符号实例相对于其原样的实际高度的百分比,7.7 常用交互动作命令,在,2004,中,可用的,ActionScript,命令已超过了,1000,条,下面介绍一些最常用的命令。,1,trace(expression);,当调试一个动画的时候,,trace,动作会把要调试的语句的结果在输出窗口中输出。在调试的时候使用,trace,,能够在输出窗口记录下所要得到的信息或是检查中间变量的值的变化情况。,trace,动作和,JavaScript,中的,alert,函数非常相似。参数,expression,是要输出的值、变量或者表达式。例如:,trace(i); /,输出变量,i,的值,trace(,abcdef,); /,输出字符串“,abcdef,”,trace(a+b-c); /,输出表达式,a+bc,的值,2,gotoAndPlay,(scene,frame);,跳转到指定帧并继续播放。,scene,参数是可选项,指定要跳转到的场景,如果不使用,则默认为当前场景。,frame,参数指定了要跳转到的帧在场景中的序号。,如:,gotoAndPlay,(5); /,跳到第5帧并继续播放,3,gotoAndStop,(scene,frame);,跳转到指定帧并停止播放。,scene,参数是可选项,指定要跳转到的场景,如果不使用,则默认为当前场景。,frame,参数指定了要跳转到的帧在场景中的序号。,如:,gotoAndStop,(5); /,跳到第5帧并停止,4.,on(,mouseEvent,) statement;,按钮事件命令,On,表示当鼠标执行某种动作时,将触发其他动作的执行。命令参数,statement,是,mouseEvent,事件激活后要执行的程序段。,mouseEvent,可以是下列参数:,press:,鼠标在按钮上时左键被按下。,release:,鼠标在按钮上时左键被松开。,releaseOutside,:,鼠标不在按钮上时左键被松开。,rollOver,:,鼠标滑过按钮。,rollOut,:,鼠标从按钮上移出。,dragOver,:,鼠标在按钮上时左键被按下,按住后鼠标移出按钮范围,然后又移回到按钮上。,dragOut,:,鼠标在按钮上时左键被按下,按住后鼠标移出按钮范围。,keyPress,:(“key”),指定的键被按下。,在下面的例子中,当鼠标左键在按钮上被按下时会激活,startDrag,动作:,on(press) ,startDrag,(_root.MC1);,5play();,开始播放动画或者,Movie Clip,,是从当前位置开始播放。如果影片由于使用,stop,或,gotoAndstop,命令而停止,那么只能使用该命令才能重新播放。,播放命令格式为,play(),,该命令没有参数。,如:,this.play (); /,开始播放当前的,Movie Clip,6stop();,停止播放动画或,Movie Clip,停止命令格式为,stop ();,如:,this.stop(); /,停止播放当前的,Movie Clip,7,stopAllSounds,();,停止播放所有的声音,该命令没有参数。,下列代码实现了当鼠标单击对象时,停止播放所有的声音:,on(release),stopAllSounds,();,8,startDrag,(,targat,lock,left,top,right,bottom);,开始用鼠标拖动,MovieClip,或,Graphic Symbol,对象。,参数,targat,是要拖曳的对象,,lock,参数用来确定是否锁定中心拖曳,参数,left,top,right,bottom,是拖曳的范围的坐标。在这里,,lock,和,left,top,right,bottom,参数都是可选的。,如:,startDrag,(_root.MC1); /,开始拖动,_,root.MC1,对象,9,stopDrag,(target);,停止用鼠标拖动,MovieClip,或,Graphic Symbol,对象。,参数,targat,是被拖曳的对象。,如:,stopDrag,(_root.MC1); /,停止拖动_,root.MC1,对象,10,fscommand,(command,arguments);,对,Flash,播放器下达指令以及向,JavaScript,传递参数。,command,参数待实现,Flash,播放器所下的指令,,arguments,参数则是下达指令的参数。,fscommand,具体的指令和参数命令表,命令,参数,使用说明,allowscale,true/false,设置,true,后,播放器将以1:1的大小播放动画,也就是说播放器的窗口变小则动画也变小相同的比例。设置,false,,动画将保持原有的大小,不管播放器窗口如何变化,Exec,应用程序的路径,将参数设置成一个外部应用程序的文件名,播放器将执行外部应用程序,fullscreen,true/false,设置,true,后,动画将全屏播放,设置,false,后,动画播放器将回到窗口播放模式,Quit,None,关闭播放程序,showmenu,true/false,设置,true,后,在播放器中,点击鼠标右键,将显示控制菜单,设置,false,后,将不会显示控制菜单,trapallkeys,true/false,设置,true,后,播放器将屏蔽热键,设置,false,后,播放器将使热键有效,11.,setProperty,(target, property, value/expression);,对象属性设置命令,setProperty,用于设置指定的实例对象中属性的值。,三个参数的含义是:参数,target,是目标对象,,property,是要设置的属性,,value/expression,是要设定的属性的值,它可以是一个值或是一个表达式。,如:单击鼠标后,设定,MC1,对象的不透明度为30%。,on(release) ,setProperty,(_root.MC1, _alpha, 30);,12.,getProperty,(target, property);,对象属性获取命令,getProperty,用于获取指定的实例对象中属性的值。,二个参数的含义是:参数,target,是目标对象,,property,是要获取的属性。,如:单击鼠标后,获取,MC1,对象的不透明度,并在输出窗口显示。,on(release) ,alph,=,getProperty,(_root.MC1, _alpha);,trace(,alph,);,13.,tellTarget,(target),通知目标命令,tellTarget,用于通知目标对象,然后进行其他的一些动作。该命令的参数只有一个,指定被通知对象的实例名称。,如:下列单击鼠标事件,实现的是通知时间上的,ball,影片剪辑,从第2帧开始播放。,on(release) ,tellTarget,(ball),gotoAndPlay,(2);,14.,onClipEvent,(,movieEvent,) . ,影片剪辑事件命令,onClipEvent,表示当某种动作发生时,将触发影片剪辑元件的其他动作。,参数,movieEvent,是影片剪辑元件可以响应的任何动作,有以下几个:,load:,电影剪辑实体在时间轴(,timeline),中出现时激活事件。,unload:,电影剪辑实体在时间轴(,timeline),中卸载后的第一帧时激活事件,在这一帧里,,unload,比其他任何事件都要优先响应。,enterFrame,:,在播放到某一帧时激活事件。,mouseMove,:,只要鼠标移动就激活事件。使用 _,xmouse,和 _,ymouse,属性能够确定当前鼠标的坐标。,mouseDown,:,鼠标左键按下时激活事件。,mouseUp,:,鼠标左键松开时激活事件。,keyDown,:,当某一键被按下时激活事件。使用,Key.,getCode,方法可以获得最后一个被按下的键的信息。,keyUp,:,当某一键被松开时激活事件。使用,Key.,getCode,方法可以获得最后一个被按下的键的信息。,data:,在,loadVariables,或,loadMovie,动作读入数据时激活事件。当指定了一个,loadVariables,动作后,,data,事件只在读入最后一个变量时响应一次。当指定了一个,loadMovie,动作后,,data,事件会每读入一段数据就响应一次,直到把数据全部载入。,如:下面的代码将在加载电影剪辑的时候读入外部的,Script,程序文件:,onClipEvent,(load) ,#include ,myScript,.as,再如:在下面的代码中,,onClipEvent,使用了,keyDown,事件和,key.,getCode,。,keyDown,事件经常和一个或几个,Key,对象的方法或属性连用;,key.,getCode,被用来获取浏览者最后一次按下的键的键值,然后再和,Key,对象的,RIGHT,和,LEFT,属性做比较来执行不同的程序:,onClipEvent,(,keyDown,) ,if (Key.,getCode,() = Key.RIGHT) ,_parent.,nextFrame,();, else if (Key.,getCode,() = Key.LEFT),_parent.,prevFrame,();,再如:在下面的代码中,,onClipEvent,使用,mouseMove,事件,同时使用 _,xmouse,和 _,ymouse,属性获取鼠标当前的坐标值,并在输出窗口显示:,onClipEvent,(,mouseDown,) ,trace(_root._,xmouse,);,trace(_root._,ymouse,);,15. set(variable, value);,对象变量设置命令,set,用于先声明一个变量,然后为此变量赋值。,两个参数,其含义是,参数,variable,指要声明的变量名或要更新的变量名;参数,value,指要赋给变量的具体数值。,如:下列代码实现单击鼠标后,先获得一个名为,ship,的影片剪辑对象的,x,轴坐标值,然后赋给声明的变量,xx,。,on(release) ,set(“,xx,”,getProperty,(“ship”, _x);,16,RemoveMovieClip,(target);,删除由,duplicateMovieClip,,,attachMovie,或,duplicateMovie,方法创建的影片剪辑或图形元件对象。,参数,target,是由,duplicateMovieClip,创建的目标影片剪辑或图形元件对象名,或是由,attachMovie,或,duplicateMovie,方法创建的影片剪辑或图形元件对象的实体名。,17,updateAfterEvent,(,movieclipevent,);,当参数中指定的动作发生后,刷新屏幕(取决于动画设定中的每秒播放帧数项)。,在,drag,动作中同时使用鼠标移动来激活,updateAfterEvent,,,刷新屏幕将不会造成屏幕的闪烁。,参数,movieclipevent,可以指定为下列的一个值作为参数:,mouseMove,:,判断鼠标是否移动,使用,_,xmouse,和 _,ymouse,属性能够确定当前鼠标的坐标。,mouseDown,:,判断鼠标左键是否按下。,mouseUp,:,判断鼠标左键是否松开。,keyDown,:,判断某一键是否被按下,使用,Key.,getCode,方法能够获得最后一个被按下的键的信息。,keyUp,:,判断某一键是否被松开,使用,Key.,getCode,方法能够获得最后一个被按下的键的信息。,18.,getURL,(,url, window , method );,获取,URL,路径命令,getURL,用于将指定的,URL,加载到浏览器窗口和将变量数据发送给指定的,URL。,参数含义是,,url,获取文档的,URL,window,可选,指定文档应加载窗口或,HTML,框架,可输入特定窗口的名称,或从下面的保留目标名称中选择:,_,self:,指定当前窗口中的当前框架。,_,blank:,指定一个新窗口。,_,parent:,指定当前框架的父级。,_,top:,指定当前窗口中的顶级框架。,method,用于发送变量的,GET,或,POST,方法。,如:将一个新,URL,加载到空浏览器窗口中。,on (release) ,getURL,(www.,ecust,.,edu,.,cn, _blank);,【例7.,1,】利用交互命令,gotoAndPlay,、,gotoAndStop,及按钮事件命令为随书配套光盘“素材,第,4,章,植物图片”文件夹中的图片像制作相册,方便用户翻看。,7.8 内置类,Flash,中使用的类可以分二种,一个是系统提供的,我们直接就可以调用的,叫内置类,一个是我们在使用前必须自己先创建的,叫自定义类。,7.8.1 内置类的分类,7.8.2 常用内置类简介,7.8.1 内置类的分类,内置类分二种:核心类和,Flash Player,专用类。,1.,十一个核心类,类名,简单说明,Arguments,包含作为参数传递给任何函数的值的数组,Array,Array,类提供用于处理数组对象的方法和属性。,Boolean(,布尔值),Boolean,类是布尔值(,true,或,false),的包装。,Button(,按钮),Button,类提供用于处理按钮对象的方法和属性。,Date(,日期),使用,Date,类可以访问相对于通用时间(格林尼治标准时间),或相对于运行,Flash Player,的操作系统的日期和时间值。,Error(,错误),Error,类包含关于脚本中出现的错误的信息。,Function(,函数),Function,类是所有动作脚本函数(包括动作脚本的固有函数和您定义的函数)的类表示形式。,Math,Math,类用于访问和处理数学常量和函数。,Math,类的所有属性和方法都是静态的,Number(,数字),Number,类是原始数字数据类型的包装。,Object(,对象),Object,类位于动作脚本类层次结构的根部;其它所有类均继承其方法和属性。,String(,字符串),String,类是字符串原始数据类型的包装,它使您能够使用 对象的方法和属性处理原始字符串值类型。,2.,Flash Player,专用类,它是,Flash Player,和,Flash,运行时模型的专用类。,分为四个类别:影片类、媒体类、客户端,/,服务器类和创作类,这个分类其实就是【动作工具箱】中的各个属性和方法的放置顺序的依据。,具体介绍略,7.8.2 常用内置类简介,1.,String,类,String,类对象用于替代以前使用的字符串类型。,String,类对象的创建方法是通过,new,运算符进行,如:,var,my_,str,=new String();,命名时加了个_,str,,,是,String,类对象名的常用后缀,在录入时有代码提示,如果你不加这样的后缀你最好还是加上:,String,,这样也会出现代码提示的。,String,对象的属性:,String.length,表示指定,String,对象中的字符数,即串长。,String,对象的方法,方法,说明,String.,charAt,(),返回字符串中特定位置处的字符。,String.,charCodeAt,(),返回指定索引处字符的值,此值为介于 0 到 65535 之间的一个 16 位整数。,String.,concat,(),合并两个字符串的文本,并返回一个新字符串。,String.,fromCharCode,(),返回由参数中指定的字符组成的字符串。,String.,indexOf,(),返回指定子字符串的第一个匹配项的位置。,String.,lastIndexOf,(),返回指定子字符串的最后一个匹配项的位置。,String.slice(),提取字符串的一部分,并返回一个新字符串。,String.split(),通过将字符串分隔为子字符串,从而将,String,对象拆分为字符串数组。,【例7.2】使用,String,类,制作具有文字打字机效果的动画。,单击时间轴第1帧,添加代码:,2.,Number,类,Number,类对象用于替代以前使用的数值类型。,Number,类对象的创建方法是通过,new,运算符进行,如:,var mynum,=new Number ();,也可以直接的把些数字赋给它,var mynum,=new Number(56);,(1)Number,类的属性,Number.MAX_VALUE:,表示最大可表示数(双精度,IEEE-754,标准)的常量。此数字大约为 1.79,E+308。,Number.MIN_VALUE:,表示最小可表示数(双精度,IEEE-754,标准)的常量。此数字大约为 5,e-324。,Number.,NaN,:,表示“非数字”(,NaN,),值的常量。,Number.NEGATIVE_INFINITY:,表示负无穷大值的常量。,Number.POSITIVE_INFINITY:,表示正无穷大值的常量。此值等同于全局变量,Infinity。,(2)Number,类的方法,Number.,toString,():,返回,Number,对象的字符串表示形式。,Number.,valueOf,():,返回,Number,对象的原始值。,在上面这些,中,Number.,toString,(),很有用,它的参数是进制基数(从 2 到 36),返回的是个字符串。,如:,myNumber,= new Number(255);,trace(,myNumber,.,toString,(2);,trace(,myNumber,.,toString,(8);,trace(,myNumber,.,toString,(16);,3.,Array,类,Array,类即数组类,实际使用较多。,用,new,运算符创建,Array,类对象实例的方法有以下几种:,var stuname,:Array=new Array(4); /,指定数目,var stuname,:Array=new Array(); /,未指定数目,var stuname,:Array=new Array(,张三,李四,王五); /创建并赋值,也可以用 运算符创建数组。是数组访问运算符,用它可以创建、赋值、动态访问数组等等,上面的例子我们也可以这样写:,var stuname,:Array=;,var stuname,:Array =,张三,李四,王五;,数组元素的引用,数组元素的引用需要数组访问运算符,数组元素引用格式:,数组名索引,即数组名字再加个索引下标就是数组元素,比如,stname,0,是第一个元素、,stname,1,是第二个元素、,stname,2,是第三个元素。,这个索引就标识了他们的位置,一定注意,索引从0开始的。,为数组元素赋初值,创建了,Array,类对象以后,可以为数组元素赋初值,称为数组的初始化。如:,var stname,:Array=new Array();,stname,0=,张三;,stname,2=,李四;,跟普通变量的赋值是一样的。但如果你没有第一个,var stname,:Array=new Array();,就是错误的。,另外,用字符做索引值有时会很有用。如:,my_Array = new Array();,my_Arrayone = ,张三;,my_Arraytwo = ,李四;,trace(my_Arraytwo); /,李四,数组对象的属性,数组对象的属性:,Array.length,指定数组中元素数量。,比如:,var mymc,= ;,trace(,mymc,.length);/,结果0,mymc,.length=98;,trace(,mymc,.length);/,结果,98,4.,Date,类,Date,类对象类似于以前使用的日期类型。,Date,类对象的创建方法有:,var,my_date =new Date();,var,my_date =new Date(2004,9,12); /,创建的同时赋初值,注意:,年:0-99:代表1900-1999,其他写全4位,比如2003,月:0-11:代表1月-12月,所以你写2代表的是3月,小时: 从 0(午夜)到 23(深夜 11 点)之间的整数,在,flash,制作中有许多与时间和日期有关的应用,比如万年历、下载时间、时钟以及让用户录入生日、登陆时间等等,就要用到,Date,类的对象。,Date,类对象常用方法,方法,说明,Date.,getDate,(),按照本地时间返回某天是当月的第几天。(1 至 31 ),Date.,getDay,(),按照本地时间返回某天是周几。(0 代表星期日,1 代表星期一,依此类推),Date.,getFullYear,(),按照本地时间返回 4 位数字的年份数。,Date.,getHours,(),按照本地时间返回小时值。 0 至 23 之间的整数,Date.,getMilliseconds,(),按照本地时间返回毫秒值。一个 0 至 999 之间的整数,Date.,getMinutes,(),按照本地时间返回分钟值。0 至 59 之间的整数,Date.,getMonth,(),按照本地时间返回月份数。,Date.,getSeconds,(),按照本地时间返回秒数。,Date.,getTime,(),返回自 1970 年 1 月 1 日午夜(通用时间)以来的毫秒数。,【例,7.3,】本例要求运用,Date,类及,setProperty,等函数,制作时钟动画。,5.,Math,类,Math,类是一个顶级类,不必使用构造函数即可使用其方法和属性。,使用该类的方法和属性可以访问和处理数学常数和函数。,Math,类的所有属性和方法都是静态的,并且必须使用语法,Math.method(parameter),或,Math.constant,来调用。,有几个,Math,类的方法使用角的弧度作为参数。可以用下面的等式来计算弧度值:,radian = Math.PI/180 * degree / degree,为角度值,如,计算一个45 度角的正弦值:,Math.sin(Math.PI/180 * 45);,Math,类的属性和方法,从略,6.,Color,类,通过,Color,类,您可以设置影片剪辑的,RGB,颜色值和颜色转换,并可以在设置后获取这些值。必须使用构造函数,new Color(),创建,Color,对象后,才可调用其方法。,Color,类的构造函数的用法:,new Color(target) /target,为影片剪辑的实例名称。,Color,类的属性和方法,方法,说明,Color.,getRGB,(),返回由最后一次,setRGB,(),调用设置的,RGB,数值。,Color.,getTransform,(),返回由最后一次,setTransform,(),调用设置的转换信息。,Color.,setRGB,(),为,Color,对象设置,RGB,值的十六进制表示形式。,Color.,setTransform,(),为,Color,对象设置颜色转换。,
展开阅读全文