flash动画脚本实例

按钮AS的编写

AS 脚本可以写在时间轴的关键桢上,也可以写在对象本身上面。按钮也既可以写在时间轴上,也可以写在按钮本身上面,这两种编写规则都要遵循一定的规矩。 第一种:把脚本写在按钮本身

一、 在舞台上绘制一个矩形, F8将这个矩形转换成按钮元件。

二、 编写动作脚本:

选中按钮, F9打开动作面板,在专家模式下输入以下脚本:

on(release){

getURL("http://3800hk.com/","_blank")

}

现在这个按钮就实现了一个打开网页的功能。通过例子你应该注意到,按钮的 AS 书写规则就是:

on(事件){

//要执行的脚本程序,刚才的例子是用 getURL 来打开一个网页。你也可以使用脚本程序来

执行其他功能,例如跳转到某一个桢,或载入外部一个动画文件。 }

其实就一个 on语句,这个 on语句就是按钮的 AS 编写规则了。需要注意的是 on 里面的事件,这个事件你可以理解为是鼠标或键盘的动作。刚才的例子我们使用的事件是 release(按一下鼠标)我现在把常用的按钮事件列出来: 事件名字 说明

Press 发生于鼠标在按钮上方,并按下鼠标

Release 发生在按钮上方按下鼠标,接着松开鼠标时。也就是“按

一下”鼠标

Releaseoutside 发生于在按钮上方按下鼠标,接着把光标移动到按钮之

外,然后松开鼠标

Rollover 当鼠标滑入按钮时

Rollout 当鼠标滑出按钮时

Dragover 发生于按着鼠标不放,光标滑入按钮

Dragout 发生于按着鼠标不放,光标滑出按钮

Keypress 发生于用户按下特定的键盘按键时

第一种:把脚本写在时间轴上

一、 选中按钮,在下面的属性面板中为按钮起一个名字bt

二、 选中时间轴的第一桢,按 F9 打开动作面板。输入如下脚本: bt.onrelease = function() {

getURL("http:// http://3800hk.com/", "_blank");

};

这种编写 AS 的方法要遵循的规则就是下面的公式而已:

按钮实例的名字.事件名称=function(){

//要执行的脚本程序。

}

大家只要记住这个公式就可以套用了。

影片剪辑的AS编写

电影剪辑AS 的编写规则,也分为两种,一种是写在电影剪辑本身上,一种是写在时间轴上面。

一、首先我们先来做个简单的小例子。

或许你不用 AS 就能做出一个小球的移动动画。但是如果让你用 AS 来实现小球的移动呢?

下面来看看如何用 AS 来实现吧。

在这个例子里,你首先会了解到如何在电影剪辑本身上编写 AS,以及编写规则。

1、 新建立一个影片剪辑元件,里面你就随便画一个圆吧。之后把这个影片剪辑拖放到舞台之中(也就是创建一个此影片剪辑的实例)。

2、 现在开始编写脚本,选中这个 MC,按 F9 打开动作面板, onClipEvent,之后在显示的事件中选择 enterFrame,然后在里面编写脚本如下: this._x+=5

这个脚本编写之后应该是:

onClipEvent (enterFrame) {// enterFrame的意思四以影片帧频不断地触发此动作

this._x += 5; //this 代表这个影片剪辑自身。_x 表示影片剪辑的X 轴坐标。 }

呵呵,按下你的 ctrl+回车测试一下吧,一个简单的移动动画就搞定了。 从这个例子咱们不难看出,如果把 AS 写在影片剪辑本身上,那么它是有自己的书写格

式的。正确的书写格式就是:

onClipEvent (事件) {

//需要执行的脚本程序

}

这个可以看成是公式,是写在影片剪辑身上的。括号里的“事件”其实是个触发器,当事件发生时,执行该事件后面花括号中的语句,具体有哪些事件,我把它们都列出来。

- load 影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。

- unload 在从时间轴中删除影片剪辑之后,此动作在第一帧中启动。处理与 Unload 影片剪辑事件关联的动作之前,不向受影响的帧附加任何动作。 - enterFrame 以影片帧频不断地触发此动作。

- mouseMove 每次移动鼠标时启动此动作。

_xmouse 和 _ymouse 属性用于确定当前鼠标位置。

- mouseDown 当按下鼠标左键时启动此动作。

- mouseUp 当释放鼠标左键时启动此动作。

- keyDown 当按下某个键时启动此动作。使用 Key.getCode 方法获取最近按下的键的有关信息。

- keyUp 当释放某个键时启动此动作。 使用 Key.getCode 方法获取最近按下的键的有关信息。

- data 当在 loadVariables 或 loadMovie 动作中接收数据时启动此动作。当与loadVariables 动作一起指定时,data 事件只发生一次,即加载最后一个变量时。当与loadMovie 动作一起指定时,获取数据的每一部分时,data 事件都

重复发生。

了解了事件之后,你可以自己试着修改一下脚本,如果让你们点一下鼠标,舞台上的圆就移动一下,该怎么做呢?

如果把 AS 写在时间轴上面的话,应该怎么写。

首先你把刚才的脚本去掉。然后需要为这个影片剪辑实例起一个名字,比如起名为 mc

在选中时间轴的第一桢,打开动作面板,输入以下脚本:

mc.onEnterFrame = function() {

this._x += 5; //你也可以把这句改为 mc._x+=5 自己想一下为什么。 };

显而易见,在时间轴上的写法就应该套用以下公式:

实例名.事件名称=function(){

//脚本程序

}

需要注意的是,这种写法的事件名称不要忘了在前面加一个 on,比如,事件如果是enterframe的话,你就应该写成 onenterframe

下面简单说一下影片剪辑的属性。比如,影片剪辑有自己的X、Y 轴坐标,有自己的透明度(_alpha),这些都是它的属性。

那么如何使用这些属性呢?你可以使用“点”语法来对属性进行设置。 把上面的脚本修改一下。

mc.onenterframe = function() {

mc._x += 5;

mc._alpha = random(100);

};

这里我加了一句 this._alpha = random(100),它是设置影片剪辑的透明度的,使用的语句就是_alpha。后面的 random()函数是随机选取一个100 以内的数字作为它的透明度。从这个句子可以看出,“点”语法使用方法就是:实例名.属性(mc._alpha),你甚至可以简单理解为点”就是“的”,那么 this._alpha 这句你就可以理解为:影片剪辑 mc的透明度

上面的脚本 mc._alpha = random(100)也可以改为_root. mc._alpha = random(100)

那么,你就可以理解为:舞台上的影片剪辑 mc的透明度是随机选择100内的值。

动态文本框

一、flash 中的动态文本使用方法

在 flash中,文本工具提供了三种文本类型。分别是:静态文本、动态文本和输入文本。

下面讲解的内容属于动态文本的 AS 编写规则。要创建一个动态文本非常简单, 只需要选中文本工具,然后选择动态文本类型,然后在舞台上拖拽出所需要的 动态文本框就行了。

二、如何为动态文本赋值

当在舞台上拖拽出动态文本框之后,可以直接在里面进行文本输入或粘贴外部文 本内容。那么用 AS 如何来对动态文本框赋值呢?在这里为大家介绍两种方法进行赋值!

1、使用动态文本的实例名字来赋值

操作步骤:

(1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个名字,例如 abc

(2)选中时间轴的第一桢,打开动作面板,输入以下脚本:

abc.text = "爱国者安全网"

按下 ctrl+回车就可进行测试了。从这个简单的例子可以知道,如果要用文本实 例名字 来进行赋值的话,必须使用以下格式:动态文本实例的名字.text=”需要赋值的内容”

2、使用变量来赋值

(1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个变量名 3800hk。

(2)选中时间轴的第一桢,打开动作面板,输入以下脚本:

3800hk= "欢迎大家来到爱国者安全网学习!"

不难看出,使用变量赋值更为简单实用!赋值格式为: 变量名=“赋值的内容” 以上两种赋值方法如果内容过多需要换行的时候,需要使用行用回车符( “\r” 即 ASCII13)分隔!

三、载入外部 txt 文本里的内容

当内容过多的时候,使用上面的方法并不是太好,我们可以使用下面的方法,从 外部获取文本资料内容!而外部的资料内容就放在一个普通的 txt(记事本)文 件中。

具体操作步骤如下:

1、创建一个动态文本实例,并为这个动态文本实例起一个变量名 hk

2、选中时间轴的第一桢,打开动作面板,输入以下脚本:

loadVariablesNum("heiying.txt", 0);//载入外部名字叫 heiying.txt 的文本文件,加载级别为0

3、现在来准备外部的 heiying.txt 文本文件了。注意:要把这个文本文件和你刚才做的 flash文件放在一个文件夹里!

这个 txt 文件里的资料应该按照如下格式编写:flash中动态文本变量的名字=这里就是 所需要的资料内容。 对应上面的格式,外部 heiying.txt 中的内容为:

hk=欢迎大家来到爱国者安全网学习!

最后一点,需要将这个文本文件保存为 UTF-8 格式。

4、 完成以上步骤之后,就可以进行测试了。

下面介绍另外一种载入外部文本资料的方法, 并介绍当文本内容过多时候,如 何使用滚动条组件

(1)创建一个动态文本实例,并并为这个动态文本实例起一个实例名字 anquan (注: 是实例名而不是变量名)起一个变量名为 hk

(2)打开 flash 的组件面板(快捷键 ctrl+F7),找到 UIScrollBar(滚动条)组

件。按着 它不动,然后拖放此组件至刚才的动态文本实例的右部边缘,如果成 功的话,组件会和文本 框结合在一起!

(3)选中舞台第一桢,编写如下脚本:

tt = new LoadVars();//创建一个 LoadVars 对象的实例,这里的实例名字叫 tt tt.load("heiying.txt");//创建的 tt 实例需要载入的对象是 heiying.txt 文本文件。

tt.onLoad = function(s) { //开始载入外部文件,具体格式请按照此例格式。参数 s

是指示 load 操作是否成功完成。如果完成,那么 S 的值就为 true( 真),反之为 false(假)

if (s) {

anquan.text = tt.hk;

}//如果载入成功, 则 anquan文本框中的内容就等于 tt.实例中的 heiying的内容!

(hk是我们 外部文本文件中的变量。)

};

(4) 至于外部的 heiying.txt 还可以使用刚才所创建的文本文件 ,为了测试滚动条的效

影片剪辑的拖拽

在网上经常看到的 flash影片中有的对象可以被鼠标进行拖动。例如有的类似七巧板的拼图游戏,控制音量的滑杆等,所使用的就是 flash中的拖拽动作。

一、拖拽命令详细介绍

1、 首先介绍一下开始拖拽命令的详细用法, 稍后在后面的例子中进行测试。 命令格式: StartDrag(要拖动的影片剪辑,[是否锁定到鼠标位置中央,左, 上,右,下])或写为要拖动的影片剪辑.StartDrag([是否锁定到鼠标位置中央,左,上,

右,下])

命令讲解:在制作动画的过程中,上面两种书写方法可任选一种。其中[] 内的为可选参数,也就是可以写,也可以不写。至于左,上,右,下四个参数是 用来控制被拖对象的移动范围。

2、停止拖拽命令讲解

命令格式: 被拖动的影片剪辑实例名.stopDrag()

这样就可以停止对对象的拖拽动作。

二、实例讲解

下面来用一个简单的例子实验拖拽命令。

操作步骤:

1、新建一个 flash 文档,并在舞台上绘制一个圆形。选中圆形并按F8, 将此圆形转换为影片剪辑,起名为:圆 。确定后将会在舞台上创建一个圆的实 例。

2、选中此实例,并按F9打开动作面板。输入如下脚本:

on (press) {

this.startDrag(true);//当鼠标按下(press)之后,这个实例(因为我们把脚本写在实例本身了,所以这里用 this 代替影片剪辑实例的名字)可以被拖拽,使用

命令如上面的命令解释。对于参数的选择方面,这里只填写了锁定到鼠标位置 中央,如果想选不锁定到鼠标位置中央,可以把true改为 false。有兴趣的朋友可以更改为 false看看。

}

on (release) {

this.stopDrag();//同样道理,当鼠标释放(release)之后,将停止拖拽动作。 }

3、好了,现在让我们按 Ctrl+回车来测试一下吧,你将会看到舞台上的圆 被你的鼠标拖动的效果。

4、OK,通过这个例子我们可以简单的应用拖拽动作了。现在需要把这个 例子继续完成,还记得上面命令讲解中的左,上,右,下四个控制拖动范围的参 数吗?现在来制作具有约束拖动范围的效果。

5、现在在舞台上绘制一个200*100大小的矩形,注意只要边框不要填 充。

6、如果我们希望在拖动的时候这个圆只能在矩形内拖动的话,就要先设置 这个矩形的坐标,并记下矩形四个顶点的坐标(这点很重要!)。OK,比如,现 在此例子中的矩形的四个顶点分别如上图所示。那我们要取的四个参数就应该

是:左=50,上=100,右=250,下=200 现在打开动作面板,修 改刚才的脚本如下:

on (press) {

this.startDrag(true, 50, 100, 250, 200);//这里我们就使用刚才确定好的4个参数。

4个点的参数就对拖动对象实现了一个矩形区域的移动约束!

}

on (release) {

this.stopDrag();

}

7、好了,按Ctrl+回车去测试吧!

好了,关于拖拽的讲解先到这里,下面我们来学习如何结合着拖拽动作来检 测对象之间的碰撞!

三、碰撞命令的讲解

命令格式: 目标影片剪辑的实例.hihkest(被拖拽的实例) 这个是比较 简单的检测碰撞命令

目标影片剪辑的实例.hihkest(被拖拽实例的X轴坐标,被拖

拽实例的Y轴坐标,对象的矩形区域范围还是对象本身范围) 这个是比较复 杂点的检测碰撞命令

命令解释: 以上两个命令都是用来检测碰撞的,可以根据需要选择不同的

命令。重点解释一下对象的矩形区域范围和对象本身范围(上面的命令中,false 表示对象的矩形区域范围,true表示对象本身的范围)

四、碰撞命令与拖拽命令的结合使用

(一)、下面通过简单的例子来学习碰撞命令(我们先来学习如何检测是否 碰到对象的矩形区域范围)

1、新建一个 flash 文档,在舞台上绘制一个圆形。选中圆形并按F8将它 转换为影片剪辑,起名:圆 。这样就在舞台上创建了一个圆的实例。 2、选中此实例,为它起一个名字,此例起名为:yuan

3、选择文字工具,并选择文字类型为“动态文本”,在圆的实例下面拖绘出一个

动态文本框。并起一个变量名为:hk

4、选中时间轴的第一桢,按F9打开动作面板,输入以下脚本:

_root.onEnterFrame = function() {

//这个是在时间轴上的AS编写规则,解释为舞台上每桢都执行下面的脚本 (onEnterFrame)。

if (_root.yuan.hitTest(_root._xmouse, _root._ymouse, false)) { //根据上面命令的讲解,这个语句就是检测碰撞了。如果鼠标碰到舞台上 yuan这个实例的矩形区域范围的话,就执行下面的脚本。

hk = "接触矩形区域范围";

//动态文本框就显示出“接触矩形区域范围”

} else {

hk = "没有接触到矩形区域范围";

//如果鼠标没有碰到舞台上 yuan 这个实例的矩形区域范围的话,就显示 没有接触到矩形区域范围。

}

};

现在可以按Ctrl+回车去测试我们的成果

(二)、拖拽碰撞检测

现在再来一个例子讲解拖拽碰撞检测, 想偷懒的话可以通过修改上面例子的 代码来学习。

1、现在稍微修改一下上面的例子,以便让我们学习拖拽碰撞检测,在上面 例子的舞台上绘制一个矩形,并把这个矩形转换成电影剪辑,起名为:矩形 。 这样就在舞台上又创建了一个矩形的实例,现在为这个矩形实例起一个名为: juxing 。

2、选中这个矩形实例,打开动作面板,输入可以拖拽这个实例的脚本。如下: on (press) {

this.startDrag(true);

}

on (release) {

this.stopDrag();

}

这个脚本就是为了能拖动这个矩形实例。 具体解释请回顾第一个拖动对象例 子的脚本说明。

3、现在来修改脚本,选中时间轴的第一桢,按F9打开动作面板,你将会 看到上个例子的碰撞检测脚本,把它修改为如下脚本:

_root.onEnterFrame = function() {

if (_root.yuan.hitTest(_root.juxing)) {

hk = "碰到了";

} else {

hk = "没有碰到";

}

}

这个脚本和上次的碰撞检测脚本类似,只不过不需要再书写X轴和Y轴,也 不用写是否碰到矩形区域范围。简单吧

现在又到了测试阶段了,去观看你的成果

六、流程控制与循环语句

众所周知,flash中动画依靠的是时间轴,在没有脚本的情况下,动画会依照时 间轴从第一帧不停的播放到最后一帧,然后始重复播放或者干脆停止。为了能更 好的控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要 使用流程控制和循环控制语句了! 下面通过几个简单的小例子来学习流程与循环

控制语句。

一、流程控制语句

所谓流程控制,无非就是我们想控制动画程序的执行顺序而已。我们可以让 flash根据一些特定的条件,来决定要执行哪个程序。这样就好象给了程序一些 判断的机制。

if...else控制语句

根据英文的意思,大家可以简单的理解上面的控制语句:如果...就...否 则...就... 下面来看看这个流程控制语句的书写格式。

if(条件){

//条件成立的话,就执行这里的程序。

}else{

//条件不成立的话就执行这里的程序。

}

下面重点说一下 if 后面括号内的条件。这个条件可以是一个固定的值,也 可以是一个变量或表达式。如果条件成立的话,也就是条件为真(true),就会 执行 if 后面的程序,如果条件不成立,也就是条件为假(false),就会执行 else里的程序。例如:有这么一个条件,A>B 将这个表达式代入if后面的括号 内, 这个流程语句的意思就变成: 如果A>B的话, 就执行第一个大括号内的程序,

如果A不大于B,就将执行else后面大括号内的程序。

实例讲解:

1、新建一个flash文档,在舞台上绘制一个圆,选中圆并按F8转换成影 片剪辑,起名为:圆 这样就在舞台上创建一个圆的实例。

2、选中舞台上的实例,按F9打开动作面板,输入如下脚本:

onClipEvent (enterFrame) {

if (this._x<400) {//流程条件控制语句,如果这个圆的实例的X轴坐标小于400,就执行后

面的程序。

this._x += 5;//让这个圆的坐标向右移动5个象素

} else {

this._x = 0;//控制语句,如果刚才的条件不成立。也就是圆实例的X坐标不小于400,就

让它的X坐标为0

}

}

上面的脚本是一个非常简单的流程控制语句,根据实例的坐标来进行判断。因为我们

使用了 enterFrame事件,所以 flash会不停的执行下面 if...else语句。 3、测试影片。会看到圆不停的向右移动,当它的X坐标大于或等于400的时候,程

序会把它的X坐标重新更改为0。

二、循环控制语句

所谓的循环语句,其实也是用条件来控制的,只要条件成立,那么,程序就会不停的执

行下去,一直执行到条件不成立为止! 常用的循环语句包括 while 循环、for 循环等。因

为篇幅有限,下面只重点讲解 for 循环的使用方法。

For 循环命令格式:

for(初始变量;条件语句;迭加命令语句){

//用户自己编写的脚本。

}

首先强调一点,for 语句的括号内有三个项目,必须要用分号间隔开!

初始变量:循环语句也是用条件是否成立来控制的,通常我们用一个变量来控制程序执

行的次数。那么,这个初始变量就要先定义一个值。要注意的是,初始变量这个项目只执行一次!

条件语句:这个项目就是我们的判断语句了。如果这个项目判断为真(true),也就是条件成立了。它就直接跳进大括号{}内执行里面的程序!反之,如果条件为假(false)它就直接跳出这个 for 语句了。

迭加命令语句:接上面的条件语句,如果条件语句成立,会执行{}内的程序,那么执行完程序之后,就要回来执行迭加命令语句了。通常它就用来增加或减少刚开始时的初始变量的值。

实例讲解:

1、新建一个 flash 文档,在舞台上绘制一个圆,选中圆并按F8转换成影片剪辑,起名为:圆 这样就在舞台上创建一个圆的实例。

2、为这个实例起名为:yuan

3、添加一个新的层,并选中新层的第一帧,按F9打开动作面板,输入如下脚本:

for (i=1; i<5; i++) {

duplicateMovieClip("yuan", "yuan"+i, i);

_root["yuan"+i]._x = random(400);

_root["yuan"+i]._y = random(300);

_root["yuan"+i]._alpha = random(100);

}

如果大家实在觉得 for 语言很难读懂的话,你可以按照 for 语言执行的顺序把 i=1 代入程序走一遍,可以帮助你理解程序。例如:当 i 等于1的时候,程序开始判断它是否小于5,那么1肯定小于5了,条件为真,就执行{}内的复制程序,同时复制出来的新实例的名字就变成了 yuan1 ,接着就是设置 yuan1 的坐标和透明度。之后,for 语句开始回去执行 i++,此时,i 的值就变为2了。然后又开始循环判断执行下去......(你可以算一下,这个 for 循环总共循环了几次呢?答案是4次。)

4、选中时间轴的第6帧,按F6插入一关键帧,打开动作面板输入以下脚本: gotoAndPlay(1);

让 flash播放到第6帧的时候返回第1帧再来执行 for 循环语句。 5、测试效果吧,你会看到舞台上会循环4次复制出4个圆。

希望大家能通过这两个简单的例子掌握流程控制语句和循环控制语句

绘图及颜色的AS的编写

在使用 flash 的过程中,难免会进行绘图的操作。除了用工具面板上的工具绘制图形之外,

我们也可以使用 ActionScript 来绘制图形。

如何绘制线段及命令解释

lineStyle(粗细,颜色,透明度) //设置绘制图形的线条粗细、颜色和透明度 Moveto(X坐标,Y坐标) //设置绘图线条的起点坐标

lineto(X坐标,Y坐标) //设置线条的结束坐标

现在就用刚才的三个命令在舞台上绘制出来一个300*100大小的矩形。 步骤:

1、新建立一个 flash文档。

2、既然要绘制一个300*100大小的矩形, 我们就要先确定矩形4个顶点的坐标,

然后就可以使用 lineto命令进行编写了。

3、选中时间轴的第一桢,打开动作面板。现在已经确定了矩形的4个顶点,那么我

们就可以来编写脚本命令了,请输入以下脚本:

_root.lineStyle(1, 0x000000, 100);//设置线条的粗细,颜色和透明度 _root.moveTo(50, 50);//设置开始点的坐标。

_root.lineTo(350, 50);

_root.lineTo(350, 150);

_root.lineTo(50, 150);

_root.lineTo(50, 50); //设置结束点坐标,整个矩形绘制完毕

相信大家通过上面的命令就很容易的用AS绘制出所需要的形状,充分发挥你的想象

力,可以通过 lineto命令来设置多个点,从而创造出各种各样的形状。 熟悉了绘制线条的命令之后我们来用一个例子加深印象。

操作步骤:

1、新建立一个 flash 文档,在舞台上绘制一个圆,选中它并按F8转换成影片剪辑,

起名为:圆 。

2、打开库面板,请将影片剪辑“圆”在舞台上再拖放一个实例,使舞台上存在两个圆的

实例。

3、现在为舞台上两个实例分别起名字为 a和 b

4、选中时间轴第一桢,打开动作面板,输入以下脚本:

function draw() { //自己定义一个函数,这个函数起名为 draw(可自定),函数的功能是要实

现以 a 实例的坐标为起点,向 b 实例绘制线条。

_root.hkear();//清除舞台上绘制的线条。

_root.lineStyle(1, 0x000000, 90);//设置线条的粗细,颜色和透明度。 _root.moveTo(a._x, a._y);//以 a实例的坐标为起点开始绘制线条。 _root.lineTo(b._x, b._y);//以 b 实例的坐标为绘制线条的结束点。

}

draw();//执行函数 draw,它将会在a 与 b 之间绘制出一条黑色的线条。 解释:为了减轻编写AS的工作量和程序的重复率,可以将某些功能定义为一个函数,

例如上面的 draw(),在使用的时候,直接执行定义过的函数,就可以完成函数的功能。

5、现在创建拖动效果,选中舞台上的 b 实例,打开动作面板,输入以下脚本: on (press) {

//点击此实例,开始拖动

this.startDrag(true);

}

on (release) {

//释放鼠标,停止拖动

this.stopDrag();

}

onClipEvent (mouseMove) { //当鼠标移动,也就是这个 b 实例移动的时候,就执行里面的程

序。

_root.draw();//执行舞台上定义过的 draw()函数,开始在 a 与 b之间绘制线条。

updateAfterEvent();//强制更新画面,是整个动画更加流畅。

}

按 Ctrl+回车测试动画效果。

二、颜色命令讲解

setRGB() 用来设置实例的颜色值,注意,这个值用16进制表示,例如 0x000000 (黑色)

getRBG() 获取实例的颜色值

下面用一个相对简单的例子来说明颜色命令的使用以及如何填充颜色

要想使用颜色命令,我们必须先构建一个 Color 对象。方法就是 自定义名字 = new

Color("要改变颜色的对象"),构建完 color 对象之后,我们就能使用 setRGB 或 getRGB 来设

置或获取颜色了。

步骤:

1、新建立一 flash文档,背景大小为550*400

2、选中时间轴第一桢,打开动作面板,我们现在要用AS来帮助我们创建一个影片剪

辑的实例。所用到的命令为:

createEmptyMovieClip("实例名称",深度)。创建一个影片剪辑实例,并起名为 hk。输入下面

脚本。

_root.createEmptyMovieClip("hk", 1);

//使用创建命令在舞台上创建一个名字叫 hk的影片剪辑实例,深度为 1 接下来我们要对这个 hk 实例进行绘制图形和填充图形!现在我们用AS绘制一

个30

0*100大小的矩形,并且把这个矩形填充为黑色,脚本如下:

with (hk) {

//使用 with命令设置 hk的各个属性

beginFill(0x000000, 85);

//开始填充这个 hk实例,颜色为黑色,透明度为 85

lineStyle(1, 0x999999, 100);

//设置这个实例的边框粗细为 1,颜色为灰色,透明度为 100

moveTo(50, 50);

//设置绘制线条的起点坐标

lineTo(350, 50);

lineTo(350, 150);

lineTo(50, 150);

lineTo(50, 50);

//结束绘制,将在舞台上绘制出一个 300*100 大小的矩形。

endFill();

//结束填充,与 beginFill()命令对应。

}

OK,现在我们就已经创建了一个黑色的矩形。现在我们要继续实现变色的功能,也就

是当鼠标移动的时候,这个矩形会随机变换颜色!就需要用到我们的构建 Color 对象的命令

了。脚本如下:

_root.onMouseMove = function() {//当鼠标移动的时候就执行下面的脚本命令。

hk_color = new Color("hk");//构建一个名字叫 hk_color 的 Color 对象。 yanse = "0x"+random(100)+random(100)+random(100);//用一个变量 yanse来获取一个数值,

这个数值就是颜色值

hk_color.setRGB(yanse);//设置矩形的颜色。

};

好了,这个例子是完全由脚本编写而成,所有脚本都在时间轴的第一桢

3、按 Ctrl+回车来测试你的影片吧~会看到矩形会随着鼠标的移动而不断进行颜色变化。

声音 AS 的编写与控制

flash 中对声音的支持也非常不错,除了可以使用时间轴放置声音文件之外,我们还可以使用AS来更加准确的控制声音!

一、FLASH 中如何创建声音控件

如果想控制动画中的声音,我们可以使用 flash中的 sound 对象,通过 sound 命令创建一个新的 sound 对象。之后再用 attachSound 命令连接到库里的声音,就可以用来控制动画中的声音了。

常用命令讲解:

new Sound() 此命令用来创建一个新的 sound 对象,有了sound 对象我们才能用AS来控制声音。

attachSound("库中的声音") 此命令可以使我们创建的声音对象连接到库里的声音,以便进行控制。

start([从第几秒开始播放, 循环次数]) 此命令可以是声音开始播放,里面的两个参数是可选的。

stop() 停止声音的播放。

setVolume(音量级别) 此命令可以控制声音的音量高低,

音量级别只能是从0-100之间的数字。

现在我们也应该用AS先做一个简单的小例子了。

二、创建一个简单的声音播放动画,可以实现简单的开始与停止

播放声音。

操作步骤:

1、新建一个 flash文档,按 Ctrl+R(文件\导入)导入一个声音文件,声音文件可以是 MP3 或 WAV 格式的。

2、选中库中的声音文件,单击鼠标右键, 在弹出的菜单中选择“链接...”将会弹出一个链接的对话框,请勾选“为动作脚本导出”和“在第一帧导出”选项,并输入一个标识符:mysound (名字可任意写),

单击确定。

3、回到主舞台,选中时间轴的第一桢,按F9打开动作面板。现在我们要创建一个新的声音对象,并且连接到库里的声音。用来控制声音。输入以下脚本: music = new Sound();//创建一个名字叫 music 的声音对象。

music.attachSound("mysound");//将这个声音对象与库里的标识符为 “mysound”的声音连接。

4、现在需要在舞台上放置两个按钮分别控制声音的播放与停止。

5、此时,舞台上将有播放和停止两个按钮,选中 Play按钮,打开动作面板,输入以下脚本:

on (release) {

music.start();

}//播放声音

选中 Stop 按钮,输入以下脚本:

on (release) {

music.stop();

}//停止播放声音

6、一个简单的控制声音播放与停止的例子就完成了,快按 Ctrl+回车来测试吧。

三、创建一个稍微复杂的例子,用来滑动按钮来控制声音的音量。

操作步骤:

1、新建一个 flash文档,并按 Ctrl+R 导入一个声音文件。

2、参照上个例子,打开库,并把导入的声音文件设置一个链界标识符。这里设置标识符为“mysound”。

3、选中舞台时间轴第一桢,打开动作面板,创建一个新的声音对象,连接库中声音,并播放这个声音。输入脚本如下:

music = new Sound();

music.attachSound("mysound");

music.start(1, 10);//播放声音,从第一秒开始播放,并循环10次

4、现在需要一个按钮做为滑动按钮,用来控制声音的音量!按钮可以自己制作或使用公用库中的按钮, 此例中我使用公用库中的按钮。请在舞台适当位置放置一个按钮实例。

5、选中按钮,打开动作面板输入以下脚本:

on (press) {

this.startDrag(false, left, top, right, bottom);//开始拖动这个按钮, 并且要规定它的拖动范围,分别由四个变量控制,4个变量的初始值稍后设置。 drag = true;//用一个变量来判断这个按钮是否被拖动了。如果它被拖 动了,变量值为 true(真)

}

on (release, releaseOutside) {

this.stopDrag();//当松开按钮或在按钮外部松开,就停止拖动。并且下面的 drag 变量为假,表示按钮没有被拖动。

drag = false;

}

6、再次选中这个按钮,并按F8键将它转换成一个影片剪辑!起名为:控制音量。也就是“控制音量”这个影片剪辑里面包含了刚才的按钮。

7、选中舞台上这个控制音量影片剪辑的实例,打开动作面板,

现在要设置拖动范围的4个初始值和设置音量大小控制。 请输入以下脚本: onClipEvent (load) {//当这个 flash 动画一开始,就设置下面4个变量的初始值。为了使按钮只能上下拖动,所以,拖动范围的左、右都固定!只能让按钮在上下100象素以内拖动。

top = _y;

left = _x;

right = _x;

bottom = _y+100;

}

onClipEvent (enterFrame) {

if (drag == true) {//如果按钮被拖动了,就开始执行下面的设置音量的 算法,用来控制音量。

_root.music.setVolume(100-(_y-top));//设置音量大小,比较难理解的是里面的算法:100-(_y-top),通过代入数字来帮助我们理解,如果_y的值是100,我们的 top 值也是固定的为100。当拖动按钮往下时,_y值就会变大,比如变为130,那么_y-top 就等于30了,在用 100-30 就等于70,这个70

就是音量的级别了。伴随着按钮越

往下拖,音量级就会变的越小,那么也就实现音量的控制了。

}

}

通过以上两个例子,应该要掌握的就是创建 sound 对象播放、停止声音,以及控制声音的方法。

时间日期的 AS编写

一、日期时间的基本命令及解释

getFullYear() 按照本地时间返回 4 位数字的年份数。

getMonth() 按照本地时间返回月份数。

getDate() 按照本地时间返回某天是当月的第几天。

getHours() 按照本地时间返回小时值。

getMinutes() 按照本地时间返回分钟值。

getSeconds() 按照本地时间返回秒数。

以上命令并不是很难理解,都是获取本地机器上日期及时间。但是要使用这些命令,我们必须先用 Date 对象的构造函数创建一个 Date 对象的实例。然后,就可以用创建的这个实例来进行操作!命令格式如下:

实例名=new Date()

二、显示日期及做一个走动的表

下面我们通过一个例子来介绍 Date对象的各种命令使用方法。

步骤:

1、新建立一 flash 文档,将层1改名为:文字显示,并在舞台下方绘制出一个动态文本框,起一个变量名:mytime

2、新建立一个层,并把这个新建立的层起名为:表盘,然后使用绘图工具在舞台上绘制出一个不带分针、时针和秒针的表盘。

3、现在来绘制指针。按 Ctrl+F8 新建立一个影片剪辑,起名为:指针 ,选择绘图工具,在里面垂直绘制出一条细线做为指针。注意:将线条的下方与影片剪辑的中心点对齐

4、返回主舞台,新建一个层,改名为:指针—秒 将刚才制作的指针拖放在表盘的中间,注意要把指针的中心点与表盘的中心点对齐。之后,为这个指针实例起一个名字为:sec

我们先做秒针。

5、同理,再新建一个层,并起名字为:指针—分 将库里的“指针”元件再拖放出来,并改变这个实例的长度和颜色,让它做为分针。实例名起为:min 6、现在按照上面的方法来制作时针,新建一个层,改名为:指针-时 将指针元件拖放在舞台中,与表盘中心对齐,并把这个实例起名为:hour

7、呵呵,现在咱们开始编写程序了,为了观察方便,我们再新建一个层,改名为AS,选中AS层的第一桢,打开动作面板,开始编写脚本,首先,我们要让舞台上的动态文本框显示日期及时间。

_root.onEnterFrame = function() {//需要让影片不停执行下面脚本。 mydate = new Date();//首先构建一个名字叫 mydate的日期对象, 因为以后我们就要用 mydate

这个实例来控制了。

myear = mydate.getFullYear();//获取本地机器上的年份,并放在 myear 变量中。

mmon = mydate.getMonth()+1;//获取本地机器上的月份,并放在 mmon变量中。因为获取的值是 0 代表一月,1 代表二月,依此类推,所以要加上 1 才正确 mdate = mydate.getDate();//获取本地机器上的本月的第几天,并放在 mdate变量中。

mou = mydate.getHours();//获取本地机器上的小时数值,放在 mou变量中,这个命令能获取0--23之间的数值。

mm = mydate.getMinutes();//获取本地机器上的分钟数值,并放在 mm变量中。 ms = mydate.getSeconds();//获取本地机器上的秒数值,放在 ms 变量中。 mytime = myear+"年"+mmon+"月"+mdate+"日 "+mou+":"+mm+":"+ms; //让舞台上变量名为mytime的动态文本框显示日期及时间。

}

现在可以测试一下了,可以发现舞台上文本框会显示出日期及时间,那么还有表里面的秒、分、时针怎么跟时间对应起来呢?现在我们加入如下一些脚本

sec._rotation = 6*ms;//利用flash中对象旋转命令来实现指针的走动。 _rotation旋转一周是360 度,所以,秒针每走一下,就等于走了6 度,所以用一个算法来获取每秒的度数 6*ms min._rotation = 6*mm;//同理,让分针也是根据获取的分钟数值乘以 6 来进行度的旋转。

hour._rotation = mou*30+mm/60*30;//小时的走动,算法稍微复杂一点,因为时针走一圈是 12 个大格。具体上面的算法有兴趣的朋友可以自己研究一下。 日期及时间的 AS 编写并不复杂,这里我只简单的讲解了获取日期及时间。,当然了,我们还可以进行日期及时间的修改设置,使用的命令及方法与获取类似,希望大家能通过这个简单的例子掌握基本的日期及时间 AS 的编写。在后面的课程中我们就要提高性的讲解,同时也希望大家继续关注。

相关推荐