已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章使用ActionScript创建交互式动画,8.1Flash脚本语言基础8.2时间轴控制8.3按钮事件8.4利用play、stop、nextFrame、prevFrame语句结合按钮控制影片播放8.5利用navigateToURL语句连接到网页文件8.6制作个性化鼠标指针8.7利用startDrag和stopDrag制作可以拖动的影片剪辑8.8应用实例8.9习题与实验指导,主目录,8.1Flash脚本语言基础,制作引人入胜的动画,需要用到动作脚本对动画进行编程控制。ActionScript3.0是FlashCS3的脚本语言,通过它可以实现用户与动画的交互,制作各种特殊效果。,8.1.1交互式动画原理,1.交互式动画概述以往电脑制作的动画通常是不可交互的,动画一直播放,观众不能控制动画的进程,动画也只能按照从开头到结尾的顺序播放。而FlashCS3允许用户参与和控制播放的内容,这使得用户的主动性大大提高,用户由被动的接受信息变为主动的查找信息,这就是通常所说的交互性功能。而应用了交互功能的动画就叫做交互式动画。ActionScript3.0是FlashCS3中的编程语言,它的结构与JavaScript基本相同。ActionScript采用的也是面向对象的编程思想,它是以关键帧为对象,采用事件响应来定义和编写ActionScript,在FlashCS3中彻底地实现了面向对象的编程,这就是第三代的交互功能编程语言:ActionScript3.0,对于有高级语言编程经验的用户来说,学习ActionScript3.0是一件很容易的事。,2.ActionSscript3.0新增功能ActionScript3.0需要一个全新的虚拟机AVM2来运行,但本质上,它仍是ActionScript,在ActionScript1.0和ActionScript2.0中的许多命令和程序概念仍然非常好的适用于ActionScript3.0。在应用中ActionScript3.0有很高的功效,还有就是ActionScript3.0在FlashPlayer中的回放速度要比ActionScript2.0代码快10倍。下面是一些ActionScript3.0中的新特性:运行时排错:错误会运行时抛出以帮助调试影片。运行时变量类型检测:在回放时会检测变量的类型是否合法。类封装:静态定义的类以增强性能。方法封装:方法现在与它们相关的类实例绑定,因此在方法中的“this”将不会改变。E4X:一个新的,更易于操作的xml正规表达式:支持本地化正规表达式。命名空间:不但在xml中支持命名空间而且在类的定义中也同样支持。int和uint数据类型:新的数据变量类型允许ActionScript使用更快的整型数据来进行计算。新的显示列表模式:个新的,自由度较大的管理屏幕上显示对象的方法。新的事件类型模式:个新的基于侦听器事件的模式。,8.1.2脚本编辑区的构成,1.打开动作面板要实现动画的交互功能,就必须通过编写ActionScript语言来实现,这就要用到动作帧面板。右键单击时间轴上需要添加动作脚本的某个关键帧,在弹出的快捷菜单中选择“动作”命令即可弹出动作帧面板。单击选中时间轴上需要添加动作脚本的某个关键帧,选择“窗口”“动作”命令也可以打开动作帧面板。选中时间轴上需要添加动作脚本的某个关键帧,按下F9快捷键也可以打开动作帧面板。要开始写一个新脚本,选择“文件”“新建”“ActionScript3.0文件”菜单命令。,2.动作面板的构成,ActionScript命令列表窗口,位置列表窗口,命令编辑窗口,8.1.3语言的编写方式,编写Flash动作脚本并不需要对ActionScript有完全的了解,用户的需求才是真正的目标。脚本可以由单一命令组成,如指示SWF文件停止播放的命令;也可以由一系列命令和语句组成,如先计算条件,再执行动作。许多ActionScript命令都很简单,可用于为SWF文件创建些基本控件。其他一些动作要求创作人员熟悉编程语言,主要用于高级开发。学习ActionScript的最佳方法往往是创建脚本。可以在动作面板的帮助下建立简单脚本。一旦熟悉了在影片中添加诸如play利stop这样的基础动作之后,就可以开始学习更多有关ActionScript的知识。要使用ActionScript的强大功能,最重要的是了解ActionScript语言的工作原理、ActionScript语言的基本概念、元素以及用来组织信息和创建交互影片的规则等。,1脚本的规划和调试在为整个影片编写脚本时,脚本的数量和变化可能都是巨大的。例如,可能需要考虑以下问题:决定使用哪些动作,如何建立更有效的脚本结构,以及在哪些地方放置脚本?所有这些问题都需要经过仔细规划和测试。特别是当影片变得越来越复杂时,这些问题更加显得突出。,2.AS3中脚本包的基本编写在以前的ActionScript1.0和2.0中,有多种途径添加代码:在时间轴上,按钮上或影片剪辑剪辑的实例上,在影片剪辑的时间轴上通过include命令引入外部的as文件或class文件。但是ActionScript3.0是完全基于类的,所以所有的代码都必须放置在类文件中。【实例】创建一个包,显示100条随机直线。(1)新建一个flash文档,并保存为“显示随机直线.fla”。(2)新建一个flash.as文档,保存为“显示随机直线.as”,并和“显示随机直线.fla”储存在同一目录下。(3)在“显示随机直线.as”中输入以下代码:,packageimportflash.display.Sprite;publicclassExampleApplicationextendsSpritepublicfunctionExampleApplication()graphics.lineStyle(1,0,1);for(vari:int=0;i100;i+)graphics.lineTo(Math.random()*400,Math.random()*400);(4)保存然后运行程序,浏览器会打开一个html文件,显示一个swf里画了100条随机直线。正如所看到的,当swf被播放器载入后构造器就会被执行。,3.AS3中脚本类的基本编写一般来说,一个.as文件中就一个类,但是在AS3中,现在允许在一个文件中定义多个类用来辅助主类。在.as文件中的辅助类,必须定义在类包以外,并只针对此文件中的主类和其他辅助类可见。例如:packageclassMyClassfunctionMyClass()varhelper:MyHelper=newMyHelper();classMyHelperfunctionMyHelper()varhelper:HelpersHelper=newHelpersHelper();classHelpersHelperfunctionHelpersHelper(),4.变量作用域修饰符(modifier)AS3的类修饰符在AS2的基础上增加了internal和final。Internal::是默认的修饰,即缺省设定,它表示此类访问范围为同一个包以内(和Java的缺省的类修饰一样)。Final:代表此类不可被继承。另外,AS3还可以使用内部类,内部类在主类同一个文件里package大括弧的外面申明,它只能被申明为internal的。并且,这个内部类只能被主类或者同文件的其它内部类访问。Public:定义的类或者属性可以在任何作用域内由任何来源访问。构造函数永远都是public的,Flex中的应用程序类(ApplicationClass)和FlashCS3中的文档类(DocumentClass)必须是public的。且不能缺省public这个关键词声明。Protected:声明类似AS2的private,它定义的属性只能在自己子类中可见,而其它场合都是不可见的。这一点与Java等传统OOP语言类似。Private:注意AS3的private和AS2的private大不相同,它定义的属性只属于自己,子类可以定义毫无牵连的同名属性。Dynamic:动态(dynamic)类允许在运行时动态地添加属性,常见的动态类有MovieClip和顶级(top-level)的Array。如果您的自定义类要继承于动态类,那么请也定义为动态的,不要省略dynamic关键词。如果您喜欢阅读英文教程,会看到很多“sealedclass”,其含义即“非dynamicclass”。只不过并没有sealed这个关键词(AS3中,类默认就是sealed的)。,8.1.4脚本元素,1.动作动作是指定一个动画在播放时做某些事情的一些语句。例如,gotoAndPlay把播放头送到指定的帧或标签。2.参数参数可以把值传递给函数。例如,下面的Hello函数使用两个值,由参数firstName和hobby接收:FunctionHello(firstName,hobby)HelloText=Hello,+firstName+很高兴见到你+hobby;3.类类是可以创建的数据类型,用以定义新的对象类型。要定义对象的类必须先创建一个构造函数。4.常量常量是不能改变的元素。例如,常量“10”总是具有相同的意思。常量在比较值时很有用。,5.结构体结构体是用来定义类的属性和方法的函数。例如,以下代码通过创建称为Circle的构造函数来创建一个新的圆类:FunctionCircle(x,y,radius)this.x=x;this.y=y;this.radius=radius;6数据类型数据类型是一组值和对这些值进行运算的。例如:字符串、数值、逻辑值(true和flase)、对象和影片剪辑等。7.事件事件是指软件或硬件发生的事情,它要求Flash应用程序予以响应。例如,单击鼠标或按下键盘键之类的事件称做用户事件,因为它是由于用户直接交互操作而发生的。FlashPlayer自动生成的事件(例如影片剪辑在舞台第一次出现)称做系统事件。为使应用程序能够对事件做出反应,必须使用事件处理函数。事件处理函数是与特定对象和事件关联的动作脚本代码。例如,当用户单击舞台上的某个按钮时,可以将播放头前进到下一帧。动作脚本提供了以下几种不同的方法来处理事件:事件处理函数方法、事件侦听器以及按钮和影片剪辑事件处理函数。,8.表达式表达式是语句中能够产生一个值的任何一部分。9函数函数是可以用来传送参数并能返回值的可重用代码块。例如,getProperty函数用于传送属性名和电影剪辑实例名,然后返回这些属性的值;getVersion函数返回当前正在插放动画的Flash播放器的版本。10事件处理程序事件处理程序是一种特殊的动作,用来处理和管理事件,例如,onClipEvent就是ActionScript的事件处理程序。11.标识符标识符是用来标明变量、属性、对象、函数或方法的名字。第一个字符必须是字母下划线()或美元符号()。每个后续字符必须是字母、数字、下划线(或美元号()如,FirstName是一个变量名。12.实例实例是属于某个类的对象。个类的每个实例包含该类的所有属性和方法,所有电影剪辑都是MovieClip类的实例,均拥有该类的属性(allalpha和visible)和方法(如gotoAndPlay和getURL)。13实例名称实例名称是在脚本中指向电影剪辑实例的唯一名字。例如,在图符库中的一个主图符可以称为counter,在动画中该图符的两个实例可以取实例名“P图层1”和“P图层2”。,14.对象属性的集合。每个对象都有自己的名称和值。对象允许用户访问某些类型的信息。例如,ActionScript的预定义对象Date就提供了系统时钟方面的信息。15.方法指定给对象的函数在函数被指定给对象之后,该函数就可以被称为是该对象的方法。16.属性定义对象的attributer(属性)。例如,所有影片剪辑对象都具有对visible(可见性)属性,通过该属性可以决定影片剪辑是否显示。17.包使用包,可以通过有利于共享代码并尽可能减少命名冲突的方式将多个类定义捆绑在一起。包可用于组织类文件。18.命名空间使用命名空间,可以控制标识符(如属性名和方法名)的可见性。命名空间可用于管理各个属性和方法的可见性。,本章目录,8.2时间轴控制,8.2.1stop、play语句,play利stop命令是一对作用相反的命令,在动画播放的过程中,如果没有特殊的说明,动画将沿着时间轴面板上的帧播放下去。使用play和stop命令,用户可以控制动画在指定位置的播放和停止。play和stop命令没有参数,其语法为:play()和stop()。,使用ActionScript可以创建脚本来通知FlashPlayer在发生某个事件时应该执行什么动作。当播放头到达某一帧,或当影片剪辑加载或卸载,或用户单击按钮或按下某个键时,就会发生一些能够触发脚本的事件。,8.2.2goto语句,goto命令是无条件跳转语句,它不受任何条件的约束,可跳转到任何地方。即在FlashCS3中,它可以不受约束地跳转到任何场景的任意一帧。在FlashCS3中,goto命令有两种基本的跳转模式:gotoAndplay(scene,frame):从当前帧跳转到新的帧以后,继续进行播放。gotoAndstop(scene,frame):从当前的帧跳转到新的帧以后,停止播放。它经常用于播放完一段完整的动画以后,跳转到一个选择菜单界面,然后用户可以选择另一个动画来播放。其中:scene为可选字符串,用于指定播放头要转到的场景的名称,可以为空。frame为一个表示播放头将转到的的帧编号,帧名称或者表达式。,8.2.3nextFrame和prevFrame语句,nextFrame用于指定时间轴上的播放头跳至下一帧,并停在该帧,其语法格式如下:nextFrame();nextFrame()里的参数可以是数值,如nextFrame(10);表示停在从当前帧往下的第10帧处。prevFrame语句与nextFrame正好相反,prevFrame用于指定时间轴上的播放头跳至前一帧,并停在该帧,其语法格式如下:prevFrame();,8.2.4nextScene和prevScene语句,nextScene():进入下一个场景,并停止在第一帧处。PrevScene():进入上一个场景,并停止在第一帧处。,8.2.5stopAllSounds语句,stopAllSounds命令用于停止所有正在播放的声音。该命令也没有参数,其语法为:stopAllSounds();,本章目录,8.3按钮事件,8.3.1基本事件的处理,1.事件和事件处理函数事件可以引发Flash去运行某些动作,而捕捉并且处理该事件的程序,称为“事件处理函数(eventhandler)”。有些事件是由用户所引发的,有些则是系统本身触发的。Flash影片在播放过程中会产生各种不同的事件,例如,每当播放头播放到另一帧时,会产生“进入帧(enterFrame)”事件;当用户调整影片窗口的大小时,会产生“调整大小(resize)”事件如果不加以理会这些事件,也就是没有编写对应的“事件处理函数”,这些事件将被忽略,Flash影片播放器将不会有任何反应。,ActionScript3.0中事件处理与之前版本的区别ActionScript3.0之前的ActionScript版本中提供许多不同的方法来处理事件:on()事件处理函数,可以直接放在Button和MovieClip实例上。onClipEvent()处理函数,可以直接放在MovieClip实例上。回调函数属性,例如XML.onload和Camera.onActivity。使用addListener()方法注册的事件侦听器。部分实现了DOM事件模型的UIEventDispatcher类。ActionScript3.0引入了单一事件处理模型,以替代以前各语言版本中存在的众多不同的事件处理机制。,8.3.2按钮事件的动作脚本,1.SimpleButton类在AS3.之前的版本中,按钮事件的脚本是直接添加在场景中按钮的某个实例上,但在AS3里,所有的脚本只能添加在时间轴的某一帧上。之前我们已经介绍过在AS3中没有类似onPress=function()这种事件监听方式,全部统一使用addEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void,此外AS3现在有一个新的类:SimpleButton(flash.display.SimpleButton)。这个类允许你通过AS创建一个按钮。2.ActionScript3.0中按钮事件处理首先,定义一个函数,这是指定为响应事件而要执行的动作的方法。接下来,调用源对象的addEventListener()方法,实际上就是为指定事件订阅该函数,以便当该事件发生时,执行该函数的动作。一旦编写了事件处理函数,就需要通知事件源对象(发生事件的对象,如按钮)希望在该事件发生时调用函数。可通过调用该对象的addEventListener()方法来实现此目的(所有具有事件的对象都同时具有addEventListener()方法)。addEventListener()方法有两个参数:第一个参数是响应的特定事件的名称。同样,每个事件都与一个特定类关联,而该类将为每个事件预定义一个特殊值;类似于事件自己的唯一名称(应将其用于第一个参数)。第二个参数是事件响应函数的名称。请注意,如果将函数名称作为参数进行传递,则在写入函数名称时不使用括号。,本章目录,8.4利用play、stop、nextFrame、prevFrame语句结合按钮控制影片播放,在简单的动画中,FlashPlayer按顺序播放SWF文件中的场景和帧。在交互式SWF文件中,观众可以用键盘和鼠标跳到SWF文件中的不同部分、移动对象、在表单中输入信息,还可以执行许多其它交互操作。【实例】制作按纽控制影片播放请参看教程,本章目录,8.5利用navigateToURL语句连接到网页文件,navigateToURL()函数的功能是,在包含FlashPlayer容器的应用程序(通常是一个浏览器)中,打开或替换一个窗口。(1)语法格式:publicfunctionnavigateToURL(request:URLRequest,window:String=null):void(2)参数:request:URLRequestURLRequest对象,指定要导航到哪个URL。window:String(default=null)浏览器窗口或HTML帧,其中显示request参数指示的文档。可以输入某个特定窗口的名称,或使用以下值之一:“_self”指定当前窗口中的当前帧。“_blank”指定一个新窗口。“_parent”指定当前帧的父级。“_top”指定当前窗口中的顶级帧。如果没有为此参数指定值,将创建一个新的空窗口。在独立播放器中,可以指定新的(_blank)窗口,也可以指定已命名的窗口。其它值不适用。【实例】创建一个按钮,并实现单击按钮时在一个新的IE窗口打开指定的网页。请参考教程。,本章目录,8.6制作个性化鼠标指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院感染管理护士工作创新案例
- 扶贫项目专员助理项目数据分析报告
- 国企与民企招聘面试技巧指南
- 印度咖喱与香料使用指南
- 学校面试流程详解与模拟实战训练
- 可靠性设计工程师工程案例分析
- 政务值班岗应急响应预案
- 南宁期货市场交易者的心理调适与压力管理
- 地铁规划与设计技能考核
- 大学生参加学术竞赛面试策略
- 高血压病病人护理
- 老年骨折病人的术后护理
- 幼儿园食堂从业人员晨检制度
- 超星尔雅学习通《学术规范与学术伦理(华东师范大学)》2025章节测试附答案
- 第14课 丝绸之路的开通与经营西域(教学设计)2024-2025学年七年级历史上册同步高效课堂(统编版2024)
- 卫生室废弃药品管理制度
- DB11-T 1034.2-2013 交通噪声污染缓解工程技术规范 第2部分 声屏障措施
- 微项目3《计算生成新的数据》说课稿-2024-2025学年泰山版(2019)初中信息技术第三册(八年级上)
- 2025年湖北宜昌市宜都市高新技术产业投资有限公司招聘笔试参考题库附带答案详解
- DB33T 1215-2020 城市轨道交通轨道工程施工质量验收标准
- 锅炉设备维护保养方案
评论
0/150
提交评论