cs交互动画基础_第1页
cs交互动画基础_第2页
cs交互动画基础_第3页
cs交互动画基础_第4页
cs交互动画基础_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章 交互动画基础1目录10.1ActionScript语言简介10.2添加动作的基本方法10.3基本命令和程序控制结构10.4Flash实例属性及剪辑的控制2教学目的和要求了解ActionScript语言的来源以及概念,理解面向对象的编程。理解ActionScript的常用术语:事件、函数、方法、属性、变量、关键字、运算符等;理解函数和方法的区别。掌握编程中常用的事件处理程序。掌握为Flash动画添加动作的基本方法,掌握“行为”面板的使用。掌握“动作”面板的使用及相关选项,了解ActionScript编程环境(使用提示和语法检查等)。3

在欣赏Flash动画时,常常看到飘落的雪花、淅沥的小雨等场景,还有一些Flash小游戏让人们玩得不亦乐乎,其实这些动画很大程度上是依赖Actions语句对动画进行编程而实现的。有些动画甚至根本不需要制作任何动画就可以直接应用Actions语句来实现。

ActionsScript实际是一种脚本语言,主要用来对动画进行编程,使用它可以使动画具有交互性,在一些动画中起到画龙点睛的效果。

Flash初学者可能会问“ActionScript在哪里呢?”在Flash中有一个“动作”面板,Flash中的所有脚本语言都可以在这里找到,展开的“动作”面板如图所示。可以选择[窗口][开发面板][动作]菜单命令打开“动作”面板。4AS动画欣赏2Flash\教本讲解\北京焰火.swfFlash\教本讲解\北京焰火.swf5AS动画欣赏1-数字世界flash/脚本动画--数字天地.swf610.1ActionScript语言简介基本内容:语言简介:ActionScript语言的来源以及概念,面向对象的编程。基本语法:ActionScript的基本语法介绍:事件、函数、方法、属性、变量、关键字、目标路径等;变量与函数。7ActionScript语言ActionScript是用来控制Flash影片的编程语言。同时它是一种非常简单的语言,简单的语言能实现一些非常高级的操作。AS语言的编写很大程度上是从列表中选择语句和参数。AS是一种脚本语言,非常易于理解,即使有很少或没有编程经验,也会很容易掌握,因为AS语言看起来像是普通的英语。ActionScript起源ActionScript是基于JavaScript的国际规范ECMA-262创建的。因此它起源于JavaScript,但是和JavaScript又不完全相同。8ActionScript1.0(Flash1.0-6.0)对应的虚拟机为AVM1,基于ECMA-262V2(相当于JavaScript1.3)ActionScript2.0(Flash7.0-8.0)对应的虚拟机为AVM1,基于ECMA-262V3(相当于JavaScript1.5)ActionScript3.0(Flash9.0-?)对应的虚拟机为AVM2,基于ECMA-262V4(相当于JavaScript2.0)9ActionScript3.0的脚本编写功能超越了

ActionScript

的早期版本。它旨在方便创建拥有大型数据集和面向对象的可重用代码库的高度复杂应用程序。虽然

ActionScript3.0对于在AdobeFlashPlayer9中运行的内容并不是必需的,但它使用新型的虚拟机AVM2实现了性能的改善。ActionScript3.0代码的执行速度可以比旧式

ActionScript

代码快10倍。

旧版本的

ActionScript

虚拟机AVM1执行

ActionScript1.0和ActionScript2.0代码。为了向后兼容现有内容和旧内容,FlashPlayer9支持AVM1。10面向对象的编程语言ActionScript是一种面向对象的编程语言,意味着AS在大多数时间是在处理和控制Flash中的各种对象(例如按钮、影片剪辑),AS检查及修改对象的属性;并对这些对象内置的方法事件进行处理。例如,可以用AS修改一个图形实例的颜色属性;在AS中处理某个按钮实例的单击事件。11动作脚本可以添加到时间轴的任意关键帧上,时间轴既可以是主时间轴,也可以是影片剪辑的时间轴。添加脚本的关键帧会以一个小写的“a”标注。添加在时间轴上的动作脚本有时称为帧动作或帧程序。12动作脚本还可以存在于单独的外部类文件中(.as)135.2动作面板和脚本窗口

在默认情况下,[动作]面板位于工作区下部。如果没有显示[动作]面板,可以执行[窗口]—〉[动作]菜单命令。或按F9快捷键打开。14[动作]面板有3部分组成:动作工具箱脚本导航器脚本编辑窗为用户创建和编辑管理脚本提供了强大的支持。通过动作面板,可以创建和编辑对象或帧上的AS代码。15动作工具箱脚本编辑窗脚本导航16新建Flash文档,单击脚本窗口上方的[脚本助手]按钮,切换到脚本助手模式。此时脚本工具箱中的显示发生变化。17要显示[脚本]窗口,可以执行[文件]—〉[新建]—〉菜单命令,在[新建文档中]对话框的类型列表中选择“ActionScript文件”,单击[确定]按钮。(也可以执行[文件]—〉[打开]菜单命令,选择已有的AS文件)1819第一个交互动画:flash/教本讲解/电影剪辑控制动画.swf源码2021使用“动作”面板基本步骤:选中预添加行为的对象:关键帧从“动作”面板左侧的函数列表中选择需要的内容(函数或者属性)。根据对代码进行修改。返回22初识ActionScript

在编写执行事件处理的ActionScript

代码时,您需要识别三个重要元素:■事件源:发生该事件的是哪个对象?例如,哪个按钮会被单击,事件源也称为“事件目标”,因为FlashPlayer将此对象(实际在其中发生事件)作为事件的目标。■事件:将要发生什么事情,以及您希望响应什么事情?识别事件是非常重要的,因为许多对象都会触发多个事件。■响应函数:当事件发生时,您希望执行哪些步骤?23“事件”就是所发生的、ActionScript

能够识别并可响应的事情。许多事件与用户交互有关—例如,用户单击按钮,或按键盘上的键。事件源.addEventListener(事件,事件响应函数名称)2425事件源:btn_play事件:MouseEvent.CLICK(鼠标单击事件)处理函数:moviePlay本质上,当包含ActionScript代码的Flash运行时,FlashPlayer只是在等待某些事情的发生。当这些事情发生时,FlashPlayer将会运行给这些事件指定的函数代码。26第二个交互动画实例鼠标或者键盘控制影片剪辑的位置272829ActionScript的术语简介基本语法目标路径:影片中影片剪辑实例、变量、对象的层次地址。变量:变量是用来存储数值、字符串、对象、逻辑值及动画片段等信息的标识符。函数:可以向其传递参数并能够返回值的可重复使用的代码段。事件:当影片播放时发生的动作。属性:定义对象的特征。方法:分派给对象的函数。3031区分大小写点语法动作脚本语句以分号(;)结束注释关键字:具有特殊意义的AS保留字。privatefunctiongetCurrentDate(){

//创建新的Date对象

myDate=newDate();//将月份数转换为月份名称currentMonth=myDate.getMonth();monthName=calcMonth(currentMonth);year=myDate.getFullYear();currentDate=myDate.getDate();}

动作脚本语句以分号(;)结束,如以下示例所示:varcolumn=passedDate.getDay();varrow=0;点(.)用于指示与对象或影片剪辑相关的属性或方法。它还用于标识影片剪辑、变量、函数或对象的目标路径。表达式ballMC.x

引用影片剪辑实例ballMC

的x属性ballMC.play();在剪辑ballMC

的时间轴中移动播放头root.functions.buildGameBoard();调用主时间轴上影片剪辑functions中的函数buildGameBoard():基本语法//创建三个不同的变量var

myVar=10;var

myvar=10;var

mYvAr=10;

动作脚本保留一些单词用于该语言中的特定用途,不能将它们用作标识符,例如变量、函数或标签名称。break

case

class

continue

default

delete

dynamic

else

extends

for

function

get

if

implements

import

in

instanceof

interface

intrinsic

new

private

public

return

set

static

switch

this

typeof

var

void

while

with

返回3233flash/教本讲解/美国地图.swf34目标路径SWF文件中影片剪辑实例名称、变量和对象的分层结构地址。

35向Flash影片中加入元件实例时,它被放入到一定影片层级中。Flash影片的主时间轴为最底层,称为root绝对路径以文档加载到其中的层名开始,一直延续到显示列表中的目标实例。也可以使用别名root来指示当前层的最顶层时间轴。root.westCoast.oregon

相对路径取决于控制时间轴和目标时间轴之间的关系。this.parent.oregon当前剪辑目标剪辑_parent.oregon.play()返回36常/变量示例代码段:on(release){

var

myNumber=7;

var

myString:="FlashMX2004ActionScript";for(vari=0;i<myNumber;i++){

trace(i);if(i+3==8){

trace(myString);}}}37常/变量常量是指在程序运行中不会改变的量。变量是程序运行中可以改变的量。变量实际上就是一个信息容器,用来存储Flash播放过程需要的一些信息。变量可以存放任何数据类型,包括数字值(如:myNumber)、字符串值(如:myString)、逻辑值、对象或电影剪辑等。在Flash中,需要明确地声明变量数字、字符串或其他函数类型。38变量的作用域变量的作用域,是指能够识别和引用该变量的区域。也就是变量在什么范围内是可以访问的:全局变量:即使没有使用目标路径指定,也可以在任何时间轴内有效,可以在当前时间轴内有效。变量声明后,在声明它的整个层级(Level)的时间线内它是可访问的。应确保首先初始化变量,然后尝试在脚本中访问它。例如,如果将代码var

x

=

10;

放置在第20帧上,则附加到第20帧之前的任何帧上的脚本都无法访问该变量的数值。本地(局部)变量:在自身代码块中有效的变量(在大括号内)。就是在声明它的语句块内(例如一个函数体)是可访问的变量,通常是为避免冲突和节省内存占用而使用。39声明和使用变量使用变量前,使用var命令先加以声明。var

myNumber:Number=7;var

myString:String="FlashActionScript";varcounter;简单示例全局变量可以在整个Movie中共享;局部变量只在它所在的代码块(大括号之间)中有效。40varcounter:Number=100;counter++;trace(counter);//显示101

functioncount(){for(varcounter=0;counter<=10;counter++){

trace(counter);//显示0到10}}count();counter++;trace(counter);//显示102

如果使用与全局变量相同的名称初始化一个本地变量,则在处于该本地变量的范围内时对该全局变量不具有访问权限返回41常/变量:数据类型■String:一个文本值■Numeric:对于numeric型数据,ActionScript3.0包含三种特定的数据类型:■Number:任何数值,包括有小数部分或没有小数部分的值■int:一个整数(不带小数部分的整数)■uint:一个“无符号”整数,即不能为负数的整数■Boolean:一个true或false值,例如开关是否开启或两个值是否相等42■MovieClip:影片剪辑元件■TextField:动态文本字段或输入文本字段■SimpleButton:按钮元件■Date:有关时间中的某个片刻的信息(日期和时间)43常/变量:常见的数据类型

字符串:字符串是诸如字母、数字和标点符号的序列。在动作脚本语句中输入字符串的方式是将其放在单引号和双引号之间,字符之间串被当作字符而不是变量进行处理。例如:在语句中favoriteBand=“L7”。vars1:String=“string”;vars2:String=“zifuchuan”;44布尔值(Boolean):布尔值是true和false中的一个。动作脚本也会在适当时将值true和false转换为1和0。布尔值经常与逻辑运算一起使用。var

isTouching:Boolean=false;45Number数据类型Number数据类型可以表示整数、无符号整数和浮点数。但是,为了尽可能提高性能,应将Number数据类型仅用于浮点数。int

数据类型int

数据类型在内部存储为32位整数,它包含一组介于-2,147,483,648(-231)和2,147,483,647(231-1)之间的整数(包括-2,147,483,648和2,147,483,647)。uint

数据类型在内部存储为32位无符号整数,它包含一组介于0和4,294,967,295(232-1)之间的整数(包括0和4,294,967,295)。uint

数据类型可用于要求非负整数的特殊情形。必须使用uint

数据类型来表示像素颜色值46

空值数据类型(Null):空值数据类型只有一个值,即Null。它意味着没有值,即缺少数据。Null值可以用在各种情况中,如指示变量尚未接受到值;指示变量不再包含值;指示函数没有可以返回的值等。作为函数的函数,则指示省略了一个参数。

void数据类型void数据类型仅包含一个值:undefined。47Object数据类型

Object数据类型是由Object类定义的。Object类用作ActionScript

中的所有类定义的基类。ActionScript3.0中的Object数据类型与早期版本中的Object数据类型存在以下三方面的区别:第一,Object数据类型不再是指定给没有类型注释的变量的默认数据类型。第二,Object数据类型不再包括undefined这一值,在ActionScript3.0中,Object类实例的默认值是null。48默认值“默认值”是在设置变量值之前变量中包含的值。Number类型,默认值是NaN,NaN

是一个由IEEE-754标准定义的特殊值,它表示非数字的某个值。49当测试和调试程序时,可以使用typeof()运算符来确定数据类型,如trace(typeof(myVar));语句将在[输出]面板中显示myVar的数据类型。可以使用以下转换函数之一,将一种数据类型转换成另一种数据类型:Array(),Boolean(),Number(),Object(),String()。如果转换失败,该函数调用将返回Null;如果转换成功,该函数将返回原对象。50类型转换var

quantityField:String="3";var

quantity:int=quantityField;//在严格模式下出现编译时错误如果您希望继续使用严格模式,但是希望将字符串转换为整数,则可以使用显式转换,如下所示:var

quantityField:String="3";var

quantity:int=int(quantityField);//显式转换成功。51转换为int、uint

和Number您可以将任何数据类型转换为int、uint

和Number。如果var

myBoolean:Boolean=true;var

myINT:int=int(myBoolean);

var

myNum:Number=Number(myBoolean);trace(uint("5"));//5trace(uint("ten"));//052转换为Boolean

在从任何数值数据类型(uint、int

和Number)转换为Boolean时,如果数值为0,则结果为false;否则为true。对于Number数据类型,如果值为NaN,则结果也为false。下面的示例说明在转换-1、0和1等数字时的结果:var

myNum:Number;for(myNum=-1;myNum<2;myNum++){

trace("Boolean("+myNum+")is"+Boolean(myNum));}本示例的输出结果说明在这三个数字中,只有0返回false值:Boolean(-1)istrueBoolean(0)isfalseBoolean(1)istrue53var

myDate:Date=newDate(2005,6,1);trace(String(myDate));//星期五7月1日00:00:00GMT-070020055455打开指定目录下的“变量.fla”源文件。选择舞台上的“panda”影片剪辑,在[动作]面板中添加如下代码:mc.addEventListener(Event.ENTER_FRAME,onMove);functiononMove(e:Event){

var

rot:Number; rot=20*Math.random(); //声明变量rot变量赋于一个随机值

if(mc.rotation>=-20)

mc.rotation-=rot; elseif(mc.rotation<20)

mc.rotation+=rot;

info.text="改变"+rot+"度"+mc.rotation+"度";}变量作用示例56按Ctrl+Enter进行测试:57ActionScript函数“函数”(function)就是在程序中可以重复使用的代码,你可以将需要处理的值或对象通过参数的形式传递给函数,然后由函数得到结果,从另一个角度说,函数存在目的就是为了简化编程的负担,减小代码量和提高效率。(1)系统函数用户在编写程序的时候可以直接拿来使用。下面是一些常用的系统函数。(2)自定义函数除了系统函数,我们在编写程序时还需要自己定义一些函数,用这些函数去完成指定的功能。讲述重点58系统函数时间轴控制函数:包括用来控制影片播放进度的各种命令。浏览器/网络函数控制web浏览器以及加/卸载额外影片文件的命令。影片剪辑控制函数用来设置及管理Flash中的各种元件的实例。打印函数其他函数数学函数包括对数字执行各种特定数学操作的函数。转换函数将数据从一种数据类型转换为另一种数据类型。59常用内置函数示例Play/Stop:控制影片开始/停止播放。gotoAndPlay:将播放头转到场景中指定的帧并从该帧开始播放。fscommand

:将消息发送给FlashPlayer或浏览器。getURL

:将特定URL的文档加载到浏览器中,实现超链接功能duplicateMovieClip

:复制一个影片剪辑的实例Getproperty:返回指定电影剪辑的属性。startDrag/stopDrag:开始/停止拖动一个影片剪辑。TargetPath:返回指定电影剪辑的目标路径字符串。GetVersion:函数获取Flashplay的版本号。GetTimer:影片开始播放以来经过的毫秒数。Eval:函数返回由表达式指定和变量的值。int:数学函数,将字符串分析为整数。IsNaN:数学函数,测试某数字是否为NaN(不是一个数字)。

Number:转换函数,将参数转换为数据类型。Boolean:转换函数,将参数转换为布尔类型。String:将数字转换为字符串类型。内置函数简单应用示例演示Play/Stop,按钮gotoAndPlay60自定义函数在Flash中定义函数的一般形式为:function函数名称(参数1,参数2,……,参数n){

//函数体。即函数的程序代码}假设要定义一个计算矩形面积的函数,可以这样:functionareaOfBox(a,b){//自定义计算矩形面积的函数

returna*b;//在这里返回结果,也就是得到函数的返回值

}自定义函数后,可以随时调用并执行它。调用函数的一般形式:函数名称(参数1,参数2,……,参数n);假设程序中要调用上面自定义的areaOfBox()函数,可以这样:area=areaOfBox(3,6);trace("area="+area);函数必须使用目标路径才能调用它们。6110.2添加动作的基本方法交互功能使Flash不仅仅局限于演示型的动画设计,而更使之成为强大的交互程序设计平台。在“动作”面板中进行编辑动作面板中的代码要与Flash动画播放过程中特定的事件对应,所谓事件,就是动画播放进程中所发生的可独立识别的事情,例如鼠标经过按钮、单击按钮、动画播放到某一个关键帧等等。在利用Flash设计交互程序时,事件是其中最基础的一个概念。通过对事件编辑代码,动画可以实现与用户交互及响应。62事件分类及处理事件的方法Flash中的事件包括用户事件和系统事件两类。用户事件是指用户直接交互操作而产生的事件。例如:鼠标单击事件按下键盘键事件系统事件是指Flash动画在播放过程中自动生成的事件。例如:动画播放到某个关键帧影片剪辑在舞台上第一次出现63事件的产生以及处理不同的代码编写方式对不同的事件进行响应处理:当在时间轴上播放到某一特定关键帧时。直接在关键帧所对应的脚本输入区编写行为代码响应其他事件(例如:单击动画中的某个元件、按下键盘上的按键、某个影片剪辑载入或卸载)利用事件侦听器方法编写代码,代码编辑区位:时间轴的第一帧的脚本编辑区与动画文件关联的外部类(class)文件64关键帧所属代码:直接在脚本输入区编写直接在脚本输入区编写行为代码(动画示例)1、放置元件的三个实例在舞台上,并分别命名star,star1,star22、新建图层并选中第一帧3、直接编写功能代码65修改元件实例的颜色var

r:Number=255-Math.random()*500;var

g:Number=255-Math.random()*500;var

b:Number=255-Math.random()*500;this.star.transform.colorTransform=newColorTransform(1,1,1,r,

g,b,0);66按钮实例在下面的脚本中,当按下鼠标按钮时,将执行

startDrag()

动作,当释放鼠标按钮时,将执行条件脚本,然后放下该对象。flash/教本讲解/电影剪辑控制动画.swf673、编写moviePlay函数4、将元件实例btn_play与函数moviePlay关联起来1、用属性面板将动画中的按钮实例命名(btn_play)2、新建图层并单击其第一帧(关键帧),F9打开动作面板68事件侦听器方法添加事件侦听addEventListener

为一个事件添加一个监听,比如鼠标单击,键盘某个键被按下等现在的程序都是事件驱动的,也就是你必须要知道用户有哪些动作,才能只当要如何去处理,事件侦听就是起到这个作用的

69事件侦听器方法事件侦听器方法就是让一个函数(称作侦听器)接收其他对象(事件源)生成的事件。可以定义多个函数(侦听器)并侦听一个对象(事件源)的事件,也可以定义函数并侦听接收多个对象的事件。用于侦听的函数名(侦听器)被侦听的对象(事件源)侦听的事件名称(事件)70基本格式:事件源.addEventListener(事件名,侦听函数名)function侦听函数名(e:事件类型){……}事件源.removeEventListener(事件名,侦听函数名)71事件名格式:事件类型:事件名称常用事件类型:Event、MouseEvent、KeyboardEvent

、TimerEvent

、……事件名称:必须与事件类型相匹配例如:Event.ENTER_FRAME

MouseEvent.CLICK

MouseEvent.DOUBLE_CLICK

KeyboardEvent.KEY_DOWN

KeyboardEvent.KEY_UP等等72MouseEvent类部分属性常用事件名:CLICK、DOUBLE_CLICKMOUSE_DOWN、MOUSE_MOVE、MOUSE_OUT、MOUSE_OVER、MOUSE_UPROLL_OUT、ROLL_OVER常用属性:stageX:鼠标在舞台中的x坐标stageYbuttonDown//是否按下鼠标ctrlKey//ctrl键是否可用73打开指定目录下“时间轴控制,fla”源文件。74bt_play.addEventListener(MouseEvent.CLICK,onPlay);bt_stop.addEventListener(MouseEvent.CLICK,onStop);bt_next.addEventListener(MouseEvent.CLICK,onNext);bt_before.addEventListener(MouseEvent.CLICK,onBefore);functiononPlay(e:MouseEvent):void{ play(); }functiononStop(e:MouseEvent):void{ stop(); }functiononNext(e:MouseEvent):void{

for(var

i:int=1;i<5;i++)

nextFrame();}functiononBefore(e:MouseEvent):void{

for(vari:int=1;i<5;i++)

prevFrame();}

75见源文件6-6var

test:Sprite=newSprite()test.graphics.beginFill(0xff9900,1)test.graphics.drawCircle(200,200,100)stage.addChild(test)/绘制一个圆添加到舞台中test.doubleClickEnabled=truetest.addEventListener(MouseEvent.DOUBLE_CLICK,receiver)functionreceiver(e:MouseEvent):void{ trace("坐标=("+e.stageX+","+e.stageY+")") trace("鼠标是否按下="+e.buttonDown)

trace("ctrl键是否可用="+e.ctrlKey)}76KeyboardEvent类部分属性常用事件名:

keyDown、keyUp常用属性altKey:Alt是否可用charCode:键的ASCII码ctrlKey:ctrl键是否可用keyCode:键控代码值:用于判断某个键是否按下或释放keyLocation:键在键盘中的位置shiftKey:Shift键是否可用77见源文件6-7,6-8constKEY_UP:uint=38;//上方向键代码,ASCII码constKEY_DOWN:uint=40;constKEY_RIGHT:uint=39;constKEY_LEFT:uint=37;var

speed:Number=2.5//影片剪辑移动速度stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFun)functionkeyDownFun(e:KeyboardEvent):void{//定义接收按键事件的函数

var

code:uint=e.keyCode//获取按键代码

if(code==KEY_LEFT)//如果按键代码等于左方向键代码

{mc.x-=speed//影片影片剪辑向左移

}

if(code==KEY_RIGHT)//如果按键代码等于右方向键代码

{mc.x+=speed }

if(code==KEY_UP) { mc.y-=speed } }7879MC(MovieClip)事件实例讲解flash/教本讲解/图形指针.swf

源码801、元件实例命名为mc3、打开动作面板并编写代码2、新建图层并选中第一帧81代码分析82Event类部分属性事件名:

ENTER_FRAME、ACTIVATE常用属性83编程小结动画编程基本含义及常用术语目标路径:影片中影片剪辑实例、变量、对象的层次地址。变量:变量是用来存储数值、字符串、对象、逻辑值及动画片段等信息的标识符。函数:可以向其传递参数并能够返回值的可重复使用的代码段。如何将脚本添加到动画中?Go具体如何编程,也即如何实现相应功能?8410.3基本命令和程序控制结构基本命令(函数)时间轴控制函数浏览器和网络控制函数851、时间轴控制函数跳转函数gotoAndPlay(scene,frame)与gotoAndstop(scene,frame)参数:scene,跳转至场景的名称;frame,跳转至帧的名称或帧数。例:gotoAndPlay(16);//gotoAndPlay("场景2",1);nextFrame()与prevframe()作用:跳至下一帧(前一帧)并停止播放。86play():使指定电影继续播放。在播放电影时,除非另外指定,否则从第1帧播放。如果电影播放进程被GoTo(跳转)Stop(停止)语句停止,则必须使用play语句才能重新播放。Stop():停止当前播放的电影,该动作最常见的运用是使用按钮控制电影剪辑。例如,如果需要某个动画在播放完毕后停止而不是循环播放,则可以在电影剪辑的最后一帧附加Stop(停止播放电影)动作。StopAllSounds():使当前播放的所有声音停止播放,但是不停止动画的播放,若动画重复播放,声音将重新开始。当按钮被单击时,电影中的所有声音将停止播放87实例讲解:Flash播放进度控制动画的第一帧(关键帧)的脚本://当前状态是否为暂停的标志变量var

pause_flag:Boolean=false;//用于记录动画暂停在哪一帧var

pauseFrame:int=0;stop();//使影片开始处于停止状态//分别给舞台、开始按钮、暂停按钮添加侦听stage.addEventListener(Event.ENTER_FRAME,showcurFrame);btn_play.addEventListener(MouseEvent.CLICK,moviePlay);btn_pause.addEventListener(MouseEvent.CLICK,moviePause);Flash\教本讲解\影片播放进度控制.swf《待续》88《续》

892、浏览器和网络控制函数fscommand命令fscommand命令可以实现对影片浏览器的控制。另外,配合JavaScript脚本语言,fscommand命令成为Flash和外界沟通的桥梁。语法格式:fscommand(命令,参数);一个是可以执行的命令,另一个是执行命令的参数。命令参数功能说明quit没有参数关闭影片播放器fullscreentrueorfalse用于控制是否让影片播放器成为全屏播放模式。true为是,false为不是。allowscaletrueorfalsefalse让影片画面始终以100%的方式呈现,不会随着播放器窗口的缩放而跟着缩放;true则正好相反。showmenutrueorfalsetrue代表当用户在影片画面上右击时,可以弹出全部命令的右键菜单,false则表示命令菜单里只显示“AboutShockwave”信息。exec应用程序的路径从Flash播放器执行其他应用软件trapallkeystrueorfalse用于控制是否让播放器锁定键盘的输入,true为是,false为不是。这个命令通常用在Flash以全屏幕播放的时候,避免用户按下Esc键,解除全屏幕播放。90实例代码剖析:fscommand命令实例“action”图层第一帧:var

full:Boolean,showmenu:Boolean,allowscale:Boolean;“退出”按钮:functionfunQuit(e:MouseEvent){

fscommand("quit","true");}“全屏”按钮functionfunFullscreen(e:MouseEvent){ full=!full;

fscommand("fullscreen",full);}“固定大小”按钮functionfunAllowscale(e:MouseEvent){

allowscale=!allowscale;

fscommand("allowscale",allowscale);}……91getURL(url[,window[,"variables"]])将来自特定URL的文档加载到浏览器窗口中,或将变量传递到位于所定义URL的另一个应用程序。也可进行电子邮件链接。参数说明:url

可从该处获取文档的URL。window

可选参数,指定文档应加载到其中的窗口或HTML框架。您可输入特定窗口的名称,或从下面的保留目标名称中选择:_self指定当前窗口中的当前框架。_blank指定一个新窗口。_parent指定当前框架的父级。_top指定当前窗口中的顶级框架。getURL(“”);跳转URL影片92LoadMovie(URL,level/target[,method]);unloadMovie(target);LoadMovieNum(URL,level[,method]);unloadMovieNum(level);载入和卸载影片命令,参数说明:URL:要载入的swf文件、jpeg文件的绝对或相对URL地址。Target:目标电影剪辑的路径。目标电影剪辑将被载入的电影或图像所替代。必须指定目标电影剪辑或目标电影的级别。二者只选其一。Level:指定载入到播放器中的电影剪辑所处的级别整数。以下是LoadMovie语句被附加给导航按钮。在舞台上有一个透明的电影剪辑,其实例名为mc_name。LoadMovie动作将使该电影剪辑作为目标参数载入SWF文件。unloadMovie(“_root.mymovie”);loadMovie(“movie.swf”,”mc_name”);Flash动态加载外部影片源文件93LoadVariables(url,”targt”,[Variables])LoadVariablesNum(url,level,[Variables])

从外部文件读入数据。外部文件包括文本文件、由CGI脚本生成的文本、ASP、PHP或PERL脚本。读入的数据作为变量将被设置到播放器级别或目标电影剪辑中。url:变量将要载入的绝对或相对路径URL地址。level/”targt”:指定载入到Flash播放器中的变量所处的级别的整数/接受载入的变量目标电影剪辑的路径。这二者只能选择其中一个。Variables:可选参数,如果没有要发送的变量,则可以忽略该参数。Flash动态加载外部文本94Flash动态加载外部文本要点:动态文本框的属性设置(属性窗口,变量属性)动态加载文本动画第一帧:动态文本的scroll属性向上按钮:向下按钮:源文件loadVariablesNum("text.txt",0);on(press){text1.scroll-=1;}on(press){text1.scroll+=1;}95程序控制结构所谓流程控制,简单说来就是控制程序的执行顺序的方式方法。Flash中动画依靠的是时间轴,在没有脚本的情况下,动画会依照时间轴从第一帧不停的播放到最后一帧,然后重复播放或者停止。为了能更好地控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要使用流程控制语句。96选择结构在实际应用中,有一些需要根据条件来判断结果的问题,条件成立是一种结果,条件不成立又是一种结果。这时就要用选择结构if(条件){代码块A;}else{代码块B}当if语句的条件成立时,执行代码块A的内容,当条件不成立时,执行代码块B的内容。关系表达式和逻辑表达式的值都是布尔(逻辑)值97选择结构:应用示例在原文件中,可发现:两个动态文本框分别命名为“passwordTxt”、“emailTxt”在第10帧和第20帧帧标签分别是“startProgram”和“invalidLogin”。98按Ctrl+Enter进行测试:99循环结构循环结构是三种基本程序结构之一。它通过一定的条件控制动作脚本中某一语句块反复执行,当条件不满足时就停止循环。循环结构1:for循环for(表达式1;条件表达式;表达式2){

代码块}

表达式1:是一个在开始循环序列前要计算的表达式,通常为赋值表达式。条件表达式:计算结果为true(真)或false(假)的表达式。在每次循环前计算该条件,当条件的计算结果为true时执行循环,当条件的计算结果为false时退出循环。表达式2:一个在每次循环迭代后要计算的表达式,通常使用带++(递增)或--(递减)运算符的赋值表达式。100for语句是一种循环构造,他首先计算一次init(初始化)表达式,然后开始一个循环序列。在该循环序列中,只要condition的计算结果为true,就执行statement然后计算下一个表达式打开指定目录下“for语句.fla”源文件varscale:Number=1;for(vari:int=1;i<=10;i++){ scale=scale-0.1; root["ball_mc"+i].scaleX=scale; root["ball_mc"+i].scaleY=scale; trace(scale);}循环结构:应用示例101按Ctrl+Enter进行测试102循环结构1:while循环while(条件表达式){

代码块}

条件表达式:计算结果为true(真)或false(假)的表达式。在每次循环前计算该条件,当条件的计算结果为true时执行循环,当条件的计算结果为false时退出循环。while语句的执行过程:先计算“条件表达式”的值,判断其值为true(真)还是false(假),如果条件是true,那么执行循环体中的代码块,执行完以后,接着开始新一轮的循环;

10310.4Flash实例属性及剪辑的控制属性是Flash中某个对象的各种不同特征。在Flash中,MC的属性有30余种,介绍部分常用的、具代表性的属性。x:影片剪辑的x坐标(整数)。y:电景剪辑的y坐标(整数)。visible:确定电景剪辑的可见性。当MC的visible的值是True(或者为1)时,MC为可见;当MC的visible的值是false(或者为0)时,MC为不可见。alpha:电影剪辑实例的透明度。有效值为0(完全透明)到100(完全不透明)。默认值为100。你可以通过对MC的alpha属性在0到100之间变化的控制,制作出或明或暗或模糊的效果来。104rotation:电影剪辑的旋转角度(以度为单位)。从0到180的值表示顺时针旋转,从0到-180的值表示逆时针旋转。height:影片剪辑的高度(以像素为单位)。width:影片剪辑的宽度(以像素为单位)。xscale:影片剪辑的水平缩放比例。yscale:影片剪辑的垂直缩放比例。当xscale和yscale的值在0~100之间时,是缩小影片剪辑为原影片剪辑的百分数;当xscale和yscale的值大于100时,是放大原影片剪辑;当xscale或yscale为负时,水平或垂直翻转原影片剪辑并进行缩放。不要把影片剪辑的高度与垂直缩放比例混淆,也不要把影片剪辑的宽度与水平缩放比例混为一谈,例如:MC.width=50//表示把MC的宽设置为50像素;MC.xscale=50//表示把MC的水平宽度设置为原来水平宽度的50%。105currentframe:影片剪辑播放头的当前帧号(只读)。

totalframes:影片剪辑中的总帧数(只读)。ymouse:系统中鼠标指针的y坐标(只读)。xmouse:系统中鼠标指针的x坐标(只读)。106设置和修改剪辑的属性前面介绍了一部分常用的MC的属性,那么到底怎么去实现对其属性的控制呢?直接设置使用句点表示法和一个表达式来设置影片剪辑实例的属性。点语句的用法的一般形式为:影片剪辑名称.属性=属性值;getProperty和setProperty命令setProperty命令用来设置MC的属性,它的一般使用形式为:setProperty(目标,属性,值);107剪辑属性应用示例on(release){//移动位置

_root.fish._x=_root.fish._x-10; //或者setProperty(_root.fish,_x,getProperty(_root.fish,_x)-10);}on(release){//更改透明度

_root.fish._alpha-=20; //或setProperty(_root.fish,_alpha,fish._alpha-20);}Flash\引导层动画-海底.swf源码-海底108setProperty(“_root.mc.mc1”,_visible,false);等价于:_root.mc.mc1._visible=false;setProperty("_root.dm",_rotation,30);可以写成:_root.dm._rotation=30;setProperty("_root.dm1",_y,getProperty("_root.dm0",_y));可以改写成两句:my=_root.dm0._y;_root.dm1._y=my;mx=getProperty(“_root.mc.mc1”,_x);可以写成:mx=_root.mc.mc1._x;109复制及清除电影剪辑命令duplicateMovieClip(目标,新名称,深度);其中有三个参数:target(目标):要复制的电影剪辑的名称和路径。newname(新名称):是复制后的电影前辑实例名称。depth(深度):已经复制电影剪辑的堆叠顺序编号。每个复制的电影剪辑都必须设置唯一的深度,否则后来复制的电影剪辑将替换以前的复制的电影剪辑,新复制的电影剪辑总是在原电影剪辑的上方。下雨

下雪110复制的影片会保持父级影片原来的所有属性,所以:原来的影片是静止的,复制后的影片也静止,并且一个叠放在另一个上。原来的影片在做补间运动,那么复制品也要做同样的运动,复制的影片始终从第一帧开始播放。复制影片经常要与影片属性控制(特别是_x,_y,_alpha,_rotation,_xscale,_yscale等属性)结合才能更好地发挥复制效果。111removeMovieClip(影片剪辑实例名);这个命令只有一个参数,那就是复制后的影片剪辑实例名称。for(I=1;I<10;I++){//变量I从1开始,到9为止,变量每次加1

duplicateMovieClip(”_root.a”,”a”+I,I);}上面这段程序代码对一个名字为a的影片剪辑实例进行复制,复制后的实例名称为a1,a2,…a9,深度分别为1,2,…9。那么,在删除这些复制的影片剪辑实例时,你可以用下面的循环语句:for(I=1;I<10;I++){

removeMovieClip(”a”+i);}112剪辑属性控制综合示例:星空制作地球以及月球矢量图绘制月球绕地球旋转的引导动画制作一个星星渐变动画添加脚本for(j=1;j<=10;j++){

varx=Math.random()*700;

vary=Math.random()*320-50;

duplicateMovieClip("star","star"+g_count,g_count);

setProperty("star"+g_count,_x,x);

setProperty("star"+g_count,_y,y);

setProperty("star"+g_count,_alpha,Math.random()*100);

setProperty("star"+g_count,_rotation,Math.random()*360); scale=Math.random()*30;

setProperty("star"+g_count,_xscale,scale);

setProperty("star"+g_count,_yscale,scale);

g_count++; }var

g_count=1;if(g_count>1000){

g_count=1; gotoAndPlay(5);}else{ gotoAndPlay(5);}113托拽影片剪辑命令在Flash动画中,鼠标突然变成一个美丽的图画,或者要任意拖动动画中的物体,Flash动画是如何实现的呢?这需要两个成对出现的命令:“startDrag()”拖拽影片和“stopDrag()”停止拖拽影片。放大镜跟随鼠标的星星Flash/教本讲解/拖拽遮罩动画.swf源码114startDrag(target,[lock

,left,top,right,bottom])target

要拖动的影片剪辑的名称(目标路径)。lock

一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。left、top、right、bottom

相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。动画中一次只能拖动一个影片剪辑。执行了startDrag()操作后,影片剪辑将保持可拖动状态,直到用stopDrag()

明确停止拖动为止,或直到对其它影片剪辑调用了startDrag()动作为止。stopDrag()无参数。停止当前的拖动操作。115创建“星星”影片剪辑知识要点:duplicateMovieClip()复制语句用startDrag()拖动影片剪辑Mouse.hide()和Mouse.show()鼠标隐藏和显示语句setProperty()影片剪辑的属性设置语句for循环语句Flash/教本讲解/跟随鼠标的星星.swf源码116代码分析:代替光标的星星:创建“星星”实例,命名为mc在影片第一帧书写代码:

Mouse.hide();

startDrag(“mc”);跟随光标的小星星:第一帧:var

g_count=0;第二帧:for(vari=0;i<2;i++)//生成两个位于鼠标位置的小星星duplicateMovieClip("star","star"+g_count,g_count);setProperty("star"+g_count,_x,_root._xmouse+random(20));setProperty("star"+g_count,_y,_root._ymouse+random(6));setProperty("star"+g_count,_rotation,random(40)-20);……//对颜色、大小等属性进行随机设置g_count++;}第三帧:gotoAndPlay(2);117常用对象简介(高级编程)Math作为一门编程语言,进行数学计算是必不可少的。在数学计算中经常会使用到数学函数,如取绝对值、开方、取整等,还有一种重要的函数是随机函数。Color运用好的色彩可以使Flash作品具有更大的感染力,要做出好的作品在色彩搭配和控制上都得搭配合适才行。在ActionScript中,Color对象专门用来管理颜色。使用Color对象可以实现许多色彩特效。DateDate对象使你可以获取相对于通用时间或相对于运行FlashPlayer的操作系统的日期和时间值。Sound在时间轴中直接嵌入声音是制作FlashMV的一种通用手法,但是这种方法除了从头至尾地播放声音外,并不能对声音进行很好的控制。Key118MathMath.abs绝对值函数作用:用来计算一个数的绝对值。例如:计算-9的绝对值,赋给x:x=Math.abs(-9);Math.round

四舍五入取整函数作用:方法将一个浮点数四舍五入为最接近的整数。例如:9.4的取整,即输出9。trace(Math.round(9.4));Math.min、Math.max

最大、最小值函数作用:Math.min方法取两个数中较小的一个数,Math.max方法取两个数中较大的一个数。例如:trace(Math.min(9,

8));//输出窗口中显示:8trace(Math.max(9,

8));//输出窗口中显示:9Math.sqrt平方根函数作用:计算一个数的平方根,例如:计算64的平方根:trace(Math.sqrt(64));//输出窗口中显示:8Math.random()随机数函数作用:该方法返回一个大于或等于0并且小于1的随机浮点数。例如:返回0、1、2、3或4中的一个随机值:Math.random()*5;随机数在Flash中的应用非常广泛。一些下雨、下雪的场景动画中常常用到随机数的设定,以取得一种自然的特效。119ColornewColor()作用:创建Color对象的实例。例如:myColor

=

new

Color(myMC);setRGB()作用:设置影片剪辑实例对象的RGB值,即颜色。setRGB的参数是以十六进制表示的,0x表示十六进制,后面的6位数字每两位为一组,分别表示红、绿、蓝3种颜色成份。如0xFF0000表示纯红,0x00FF00表示纯绿,0x0000FF表示纯蓝,0xFFFF00表示纯黄。例如:myColor.setRGB(0xFF0000);getRGB()作用:获取由setRGB方法指定的颜色值。实例:完善跟随鼠标的星星动画120DatenewDate()作用:创建一个Date对象的实例。例如:myDate=newDate(2003,7,8);这是指定时间创建一个Date对象的实例。getDate()作用:获取系统时间来创建Date对象的实例。例如:myDate=newDate();year=myDate.getYear();121SoundnewSound()作用:创建Sound对象的实例。例如:mySound=newSound();attachSound()作用:在影片播放时将【库】中的声音元件附加到场景中。要使用该方法将声音附加到场景中,首先需要在【库】中为声音添加链接。在要添加链接的声音元件上单击鼠标右键,在弹出的快捷菜单中选择【链接】命令,弹出【链接属性】对话框,选择【为脚本导出】和【第一帧导出】两个选项。然后才可以在程序中编写类似于下面的程序代码:mySound.attachSound("music");start()和stop()作用:让声音开始播放和停止用Sound对象播放的声音。例如:mySound.start();//开始播放声音on(release){

mySound.stop();//停止播放声音}122脚本综合实例一:石英钟知识要点:影片剪辑的onLoad事件影片剪辑的onEnterFrame事件Date对象应用Color对象应用if语句应用Flash\教本讲解\石英钟.swf123时针显示初始化:_root.onLoad=function(){timedate=newDate(); //初始化日期以及星期

year=timedate.getFullYear()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论