1 按钮的 AS 编程规则
在 flash 中,要想实现交互功能,一般要用按钮来完成,因此掌握按钮的 AS 编写规则是完成一个动画作品所必须的基本技能。AS 脚本编程可以写在对象本身上面,也可以写在时间轴的关键桢上。按钮也不例外,既可以写在按钮本身上面,也可以写在时间轴上。而且这两种脚本的编写都要遵循一定的规则。
如果要在动画中制作一个按钮,单击按钮会打开一个指定的网页。那么我们来看看写在按钮本身上面的程序和写在时间轴的关键帧上的程序在编写规则上有什么不同。
1.1 在按钮元件本身上面编写动作脚本的编写规则
首先,在舞台上绘制一个图形对象,选中并按 F8,将这个图形对象转换成按钮元件。
接下来编写这个按钮元件的动作脚本:
选中按钮,按? F9,打开动作面板,输入以下脚本:
on(release){getURL
这样,这个按钮就实现了一个打开网页的功能。
在按钮本身上面的 AS 编写规则是:
on(事件){//要执行的脚本程序}
在 flash 中,针对一个对象设计动作,主要用到的就是 on语句,on 语句的编程方法决定了对象的 AS 编写规则。on 语句里面的事件,可以理解为是鼠标或键盘的动作。
常用的事件有:
Press 鼠标在按钮上方,并按下鼠标。
Release 鼠标在按钮上方按下鼠标,接着松开鼠标。
Releaseoutside 在按钮上方按下鼠标,接着把光标移动到按钮之外,然后松开鼠标。
Rollover 当鼠标滑入按钮时。
Rollout 当鼠标滑过按钮时。
Dragover 按着鼠标不放,光标滑入按钮。
ragout 按着鼠标不放,光标滑出按钮。
1.2 在时间轴上编写动作脚本的 AS 编写规则这种方法是把脚本程序写在时间轴上,而不是按钮对象本身上面。
首先,选中按钮,在下面的属性面板中为按钮起一个名字An.
接下来,选中时间轴的第一桢,按F9?打开动作面板,输入如下脚本:
An.onrelease = function() {getURL;};通过这个脚本的编写,也可以实现单击按钮来打开网页的功能。这种 AS 的编写方法要遵循的规则就是下面的公式:
按钮实例的名字。事件名称=function(){//要执行的脚本程序。}
1.3 举个例子看看它的应用:
要实现用“播放”“停止”“快进”和“快退”四个按钮控制影片剪辑元件的播放,可以在每个按钮上面编写如下的程序:
(1)要实现当 release 事件发生的时候,即用鼠标点击“播放”按钮时,让舞台上的 mc 开始播放,可以如下面这样在“播放”按钮本身上面编写程序:
on(release){_root.mc.play();};
(2)要实现当 release 事件发生的时候,即用鼠标点击“停止”按钮时,让舞台上的 mc 停止播放,可以如下面这样在“停止”按钮本身上面编写程序:
on(release){_root.mc.stop()};
(3)要实现当 release 事件发生的时候,即用鼠标点击“快进”按钮时,让舞台上的mc快进播放时,可以如下面这样在“快进”按钮本身上面编写程序:
on(release){_root.mc.nextFrame();};
(4)要实现当 release 事件发生的时候,即用鼠标点击“快退”按钮时,让舞台上的mc快退播放时,可以如下面这样在“快退”按钮本身上面编写程序:
on(release){_root.mc.prevFrame();//prevFrame 表示回到动画的上一桢}
2 影片剪辑元件的 AS 编程规则
影片剪辑在 flash 中是使用最多的一类元件,那么对于它的 AS 编程也有很多应用。
编写影片剪辑的动作脚本也有两种情况,一种是写在影片剪辑本身上面,一种是写在时间轴上面。
如果我们想制作一个小球的移动动画,那我们就来看看写在影片剪辑元件本身上面的程序和写在时间轴的关键帧上的程序在编写规则上有什么不同。
2.1 在影片剪辑元件本身上编写动作脚本的 AS 编写规则
首先建立一个影片剪辑元件,绘制一个球形对象,填充线性渐变色。之后把这个影片剪辑拖放到舞台之中,创建一个影片剪辑的实例,把这个实例命名为“MC”.
接下来编写这个实例的动作脚本,选中这个影片剪辑原件的实例MC,按F9 打开动作面板,选择onClipEvent,之后在显示的事件中选择 enterFrame,然后在里面编写脚本如下:this._x+=5即在这个实例上面输入了如下的程序:
onClipEvent (enterFrame){this._x+=5;};
(enterFrame 的意思是以影片帧频不断地触发此动作。
this 代表这个影片剪辑自身。
_x 表示影片剪辑的 X 轴坐标。)
按下 ctrl+回车测试。
从这个例子不难看出,如果把 AS 写在影片剪辑本身上,那么它正确的书写格式就是:
onClipEvent(事件){//需要执行的脚本程序};
这个是把 AS 写在影片剪辑本身上的编写规则。括号里的“事件”其实是个触发器,当事件发生时,执行该事件后面花括号中的语句。Flash中有很多种事件类型,常用的有如下几个:
-load
影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。
-unload
在从时间轴中删除影片剪辑之后,此动作在第一帧中启动。处理与 Unload 影片剪辑事件关联的动作之前,不向受影响的帧附加任何动作。
-enterFrame
以影片帧频不断地触发此动作。
-mouseMove
每次移动鼠标时启动此动作。
_xmouse 和_ymouse
属性用于确定当前鼠标位置。
-mouseDown
当按下鼠标左键时启动此动作。
-mouseUp
当释放鼠标左键时启动此动作。
-keyDown
当按下某个键时启动此动作。使用 Key.getCode?方法获取最近按下的键的有关信息。
-keyUp当释放某个键时启动此动作。使用 Key.getCode?方法获取最近按下的键的有关信息。
- data
当在 loadVariables 或 loadMovie 动作中接收数据时启动此动作。当与 loadVariables?动作一起指定时,data 事件只发生一次,即加载最后一个变量时。当与 loadMovie 动作一起指定时,获取数据的每一部分时,data 事件都重复发生。
2.2 在时间轴上编写动作脚本的 AS 编写规则
首先同样需要为这个影片剪辑实例起一个名字“mc”,再选中时间轴的第一桢,打开动作面板,输入以下脚本:
mc.onEnterFrame=function(){this._x+=5;};
在时间轴上的 AS 编写规则如下:
实例名,on事件名称=function(){//
需要执行的脚本程序};需要注意的是,这种写法的事件名称不要忘了在前面加一个,比如,事件如果是enterframe的话,你就应该写成onenterframe
2.3 举个例子看一看它的应用
要实现影片剪辑元件在舞台上移动,并且透明度在 0-100 的范围内随机不断发生变化的效果,可以在时间轴上编写如下程序:
mc.onenterframe=function(){mc._x+=5;mc._alpha=random(100);};
其中的 this._alpha=random(100),是为了设置影片剪辑元件的透明度的,后面的random()函数是随机选取一个 100 以内的数字作为它的透明度。
参考文献:
[1] 李冬芸。Flash 动画实例教程[M].电子工业出版社,2010
[2] 朱俊杰,李可胜。Flash 动画设计教程(21 世纪大学计算机系列教材)[M].北京科海电子出版社,2009
[3] 王志敏,刘鸿翔。Flash 动画制作(高等学校用书教材)[M].华中科技大学出版社,2005