admin 管理员组文章数量: 887021
2024年1月24日发(作者:ps怎么快速切片)
详解
一、FLASH脚本基础入门讲解 ............................................................................................. 1
二、按钮AS的编写 ................................................................................................................ 4
三、影片剪辑的AS编写 ........................................................................................................ 5
四、动态文本框 ....................................................................................................................... 6
五、影片剪辑的拖拽 ............................................................................................................... 8
六、流程控制与循环语句 ..................................................................................................... 10
七、绘图及颜色的AS的编写 .............................................................................................. 12
八、声音 AS 的编写与控制 ................................................................................................ 14
九、时间日期的 AS编写 ..................................................................................................... 17
十、点语法以及路径 ............................................................................................................. 18
十一、深入了解时间控制 ..................................................................................................... 20
十二、无条件转移 ................................................................................................................. 25
十三、变量 ............................................................................................................................. 29
十四、运算符(一) ............................................................................................................. 35
十五、变量(二) ................................................................................................................. 39
十六、影片剪辑的属性 ......................................................................................................... 43
十七、再讲循环语句 ............................................................................................................. 49
十八、影片剪辑处理函数 ..................................................................................................... 55
十九、复制影片剪辑 ............................................................................................................. 60
二十、深入 startDrag()与 stopDrag() .................................................................................. 63
二十一、for循环 ................................................................................................................... 67
二十二、while与 do while循环 .......................................................................................... 71
二十三、循环语句的嵌套 ..................................................................................................... 75
二十四、组件 ......................................................................................................................... 77
二十五、播放器控制与网页连接以及动画发布输出 ......................................................... 80
二十六、loadVariables命令 .................................................................................................. 81
二十七、影片剪辑的深度 ..................................................................................................... 82
二十八、文本框 ..................................................................................................................... 84
二十九、超文本标签 ............................................................................................................. 85
一、FLASH脚本基础入门讲解
认识“动作”面板
在Flash中,动作脚本的编写,都是在“动作”面板的编辑环境中进行,熟悉“动作”面板是十分必要的。
按【F9】键调出“动作”面板,可以看到“动作”面板的编辑环境由左右两部分组成。左侧部分又分为上下两个窗口。。
左侧的上方是一个“动作”工具箱,单击前面的图标展开每一个条目,可以显示出对应条目下的动作脚本语句元素,双击选中的语句即可将其添加到编辑窗口。
下方是一个“脚本”导航器。里面列出了FLA文件中具有关联动作脚本的帧位置和对象;单击脚本导航器中的某一项目,与该项目相关联的脚本则会出现在“脚本”窗口中,并且场景上的播放头也将移到时间轴上的对应位置上。双击脚本导航器中的某一项,则该脚本会被固定。
右侧部分是“脚本”编辑窗口,这是添加代码的区域。可以直接在“脚本”窗口中编辑动作、输入动作参数或删除动作。也可以双击“动作”工具箱中的某一项或“脚本编辑”窗口上方的【添加脚本】工具 ,向“脚本”窗口添加动作。
在“脚本”编辑窗口的上面,有一排工具图标,在编辑脚本的时候,可以方便适时的使用它们的功能。
在使用“动作”面板的时候,可以随时点击“脚本”编辑窗口左侧的箭头按钮,以隐藏或展开左边的窗口。将左面的窗口隐藏可以使“动作”面板更加简洁,方便脚本的编辑。
好了,动作面板就介绍这些,有个印象,不要求记住,工具栏上每个工具的作用和功能将在以后的课程中边用边熟悉。
如何编写flash中的脚本
首先,要知道编写脚本,不需要用户对AS有完全的了解!
现在要考虑的问题是,如何在你的flash中添加编写脚本?简单的说,添加脚本可分为两种:一是把脚本编写在时间轴上面的关键桢上面(注意,必须是关键桢上才可以添加脚本)。二是把脚本编写在对象身上,比如把脚本直接写在MC(影片剪辑元件的实例)上、按钮上面。
此外,大家也需要简单理解一下flash是如何执行你编写的脚本的。当你在时间周的关键桢上添加了脚
本,那么当flash运行的时候,它会首先执行这个关键桢上的脚本,然后才会显示这个关键桢上的对象。
还有一些简单的知识,AS中的对象都包括什么呢?它可以包含数据,也可以是舞台上的电影剪辑,也可以是舞台上的按钮等。既然包含了那么多对象,那么每种对象肯定有各自的属性!比如电影剪辑(movieclip)对象,它的:属性就有_height(高度),_rotation(旋转),等,这些属性不需要你去特意的记忆,当使用的时候可以随时翻阅脚本字典。在以后的教程中会陆续给大家介绍一些基础脚本的使用技巧。
二、需要学到的基本AS命令如下:
stop()、play()、gotoandplay()、gotoandstop()、nextFrame()、prevFrame();、nextScene()、prevScene();、stopAllSounds(); 按钮的AS编写规则
播放
on (release) {
_();
}
如果要在按钮身上写脚本的话,必须使用on(事件){//脚本程序}的格式来写!上面的脚本作用就是:当你在这个按钮上按一下鼠标(release事件)的时候,就会执行下面的_();程序,它的意思是让舞台上的mc开始播放!
6、同理:咱们选中舞台上的暂停按钮,在它上面输入:
on (release) {
_()
}
然后依次在快退上输入:
on (release) {
_ame(); //prevFrame表示回到动画的上一桢
}
在快进的按钮上输入:
on (release) {
_ame();
}
在停止的按钮上输入:
on (release) {
_dStop(1); //跳到mc影片的第一桢,并停止播放!
}
二、按钮AS的编写
在 flash 中的交互功能一般是由按钮来完成的。掌握按钮的编写规则也是一个闪客的基本技
能。
OK,现在咱们来说说按钮脚本如何编写。上一讲中提过,AS 脚本编写可以写在时间轴的关
键桢上,也可以写在对象本身上面。按钮也不例外,既可以写在时间轴上,也可以写在按钮
本身上面。只不过这两种编写规则都要遵循一定的规矩,这是后话。
现在咱们来做一个例子, 做一个按钮, 这个按钮要实现的功能就是打开一个指定的网页。
(这个例子非常基础,用这个例子来讲解按钮 AS 两种编写方法。)
第一种:把脚本写在按钮本身。
一、 在舞台上绘制一个矩形,选中矩形并按 F8,将这个矩形转换成按钮元件。
二、 编写动作脚本:
选中按钮,按 F9,打开动作面板,在专家模式下输入以下脚本:
on(release){
getURL("/","_blank")
}
现在这个按钮就实现了一个打开网页的功能。通过例子你应该注意到,按钮的 AS 书写规则
就是:
on(事件){
//要执行的脚本程序,刚才的例子是用 getURL 来打开一个网页。你也可以使用脚本程序来
执行其他功能,例如跳转到某一个桢,或载入外部一个动画文件。
}
大可以看到,其实就一个 on语句,这个 on语句就是按钮的 AS 编写规则了。需要注意
的是 on 里面的事件,这个事件你可以理解为是鼠标或键盘的动作。刚才的例子我们使用的
事件是 release(按一下鼠标)我现在把常用的按钮事件列出来:
事件名字 说明
Press 事件发生于鼠标在按钮上方,并按下鼠标
Release 发生在按钮上方按下鼠标,接着松开鼠标时。也就是“按一下”鼠标
Releaseoutside 发生于在按钮上方按下鼠标,接着把光标移动到按钮之外,然后松开
鼠标
Rollover 当鼠标滑入按钮时
Rollout 当鼠标滑出按钮时
Dragover 发生于按着鼠标不放,光标滑入按钮
Dragout 发生于按着鼠标不放,光标滑出按钮
Keypress 发生于用户按下特定的键盘按键时
下面来看看第二种按钮 AS的编写方法。
这种方法是把脚本程序写在时间轴上,而不是按钮本身上面。
一、 选中按钮,在下面的属性面板中为按钮起一个名字,这里我起了一个 bt
二、 选中时间轴的第一桢,按 F9 打开动作面板。输入如下脚本:
ase = function() {
getURL(" /", "_blank");
};
这种编写 AS 的方法要遵循的规则就是下面的公式而已:
按钮实例的名字.事件名称=function(){
//要执行的脚本程序。
}
大家只要记住这个公式就可以套用了。
按钮的 AS 就先将到这了,这个可以算是基本技能了。希望大家都能掌握。
三、影片剪辑的AS编写
影片剪辑在flash中可以说是使用最多的一种元件了,那么对于它的AS也是不
少。
在讲解之前,我还是要重新说一下电影剪辑AS 的编写规则,和上次讲按钮一样,
分为两种,一种是写在电影剪辑本身上,一种是写在时间轴上面。
一、首先我们先来做个简单的小例子。
或许你不用 AS 就能做出一个小球的移动动画。但是如果让你用 AS 来实现小球的移动呢?
下面来看看如何用 AS 来实现吧。
在这个例子里,你首先会了解到如何在电影剪辑本身上编写 AS,以及编写规则。
1、 新建立一个影片剪辑元件,里面你就随便画一个圆吧。之后把这个影片剪辑拖放到
舞台之中(也就是创建一个此影片剪辑的实例)。
2、 现在开始编写脚本,选中这个 MC,按 F9 打开动作面板,按照图 01 显示选择
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 当按下某个键时启动此动作。使用 e 方法获取最近按下的键的
有关信息。
- keyUp 当释放某个键时启动此动作。 使用 e 方法获取最近按下的键的有关
信息。
- data 当在 loadVariables 或 loadMovie 动作中接收数据时启动此动作。当与
loadVariables 动作一起指定时,data 事件只发生一次,即加载最后一个变量时。当与
loadMovie 动作一起指定时,获取数据的每一部分时,data 事件都重复发生。
了解了事件之后,你可以自己试着修改一下脚本,如果让你们点一下鼠标,舞台上的圆
就移动一下,该怎么做呢?
关于把 AS 写在影片剪辑本身的例子先讲到这,下面来看看如果把 AS 写在时间轴上面
的话,应该怎么写。
首先你把刚才的脚本去掉。然后需要为这个影片剪辑实例起一个名字,比如起名为 mc
在选中时间轴的第一桢,打开动作面板,输入以下脚本:
rFrame = function() {
this._x += 5; //你也可以把这句改为 mc._x+=5 自己想一下为什么。
};
显而易见,在时间轴上的写法就应该套用以下公式:
实例名.事件名称=function(){
//脚本程序
}
需要注意的是,这种写法的事件名称不要忘了在前面加一个 on,比如,事件如果是
enterframe的话,你就应该写成 onenterframe
下面简单说一下影片剪辑的属性。比如,影片剪辑有自己的X、Y 轴坐标,有自己的透
明度(_alpha),这些都是它的属性。
那么如何使用这些属性呢?你可以使用“点”语法来对属性进行设置。
把上面的脚本修改一下。
rframe = 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)选中时间轴的第一桢,打开动作面板,输入以下脚本:
= "爱国者安全网"
按下 ctrl+回车就可进行测试了。从这个简单的例子可以知道,如果要用文本实
例名字 来进行赋值的话,必须使用以下格式:动态文本实例的名字.text=”需要
赋值的内容”
2、使用变量来赋值
(1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个变量名
3800hk。
(2)选中时间轴的第一桢,打开动作面板,输入以下脚本:
3800hk= "欢迎大家来到爱国者安全网学习!"
不难看出,使用变量赋值更为简单实用!赋值格式为: 变量名=“赋值的内容”
以上两种赋值方法如果内容过多需要换行的时候,需要使用行用回车符( “r”
即 ASCII
13)分隔!
三、如何载入外部 txt 文本里的内容
当内容过多的时候,使用上面的方法并不是太好,我们可以使用下面的方法,从
外部获 取文本资料内容!而外部的资料内容就放在一个普通的 txt(记事本)文
件中。
具体操作步骤如下:
1、创建一个动态文本实例,并为这个动态文本实例起一个变量名 hk
2、选中时间轴的第一桢,打开动作面板,输入以下脚本:
loadVariablesNum("", 0);//载入外部名字叫 的文本文件,加载
级别为0
3、现在来准备外部的 文本文件了。注意:要把这个文本文件和你刚
才做的 flash文件放在一个文件夹里!
这个 txt 文件里的资料应该按照如下格式编写:flash中动态文本变量的名字=这
里就是 所需要的资料内容。 对应上面的格式,外部 中的内容为:
hk=欢迎大家来到爱国者安全网学习!
。
最后一点,需要将这个文本文件保存为 UTF-8 格式。
4、 完成以上步骤之后,就可以进行测试了。
下面介绍另外一种载入外部文本资料的方法, 并介绍当文本内容过多时候,如
何使用滚
动条组件
(1)创建一个动态文本实例,并并为这个动态文本实例起一个实例名字 anquan
(注: 是实例名而不是变量名)起一个变量名为 hk
(2)打开 flash 的组件面板(快捷键 ctrl+F7),找到 UIScrollBar(滚动条)组
件。按着 它不动,然后拖放此组件至刚才的动态文本实例的右部边缘,如果成
功的话,组件会和文本 框结合在一起!
(3)选中舞台第一桢,编写如下脚本:
tt = new LoadVars();//创建一个 LoadVars 对象的实例,这里的实例名字叫 tt
("");//创建的 tt 实例需要载入的对象是 文本文件。
= function(s) { //开始载入外部文件,具体格式请按照此例格式。参数 s
是指示 load 操作是否成功完成。如果完成,那么 S 的值就为 true( 真),反之
为 false(假)
if (s) {
= ;
}//如果载入成功, 则 anquan文本框中的内容就等于 tt.实例中的 heiying的内容!
(hk是我们 外部文本文件中的变量。)
};
(4) 至于外部的 还可以使用刚才所创建的文本文件 ,为了测试滚动
条的效
五、影片剪辑的拖拽
在网上经常看到的 flash影片中有的对象可以被鼠标进行拖动。例如有的类似七
巧板的拼图游戏,控制音量的滑杆等,所使用的就是 flash中的拖拽动作。
一、拖拽命令详细介绍
1、 首先介绍一下开始拖拽命令的详细用法, 稍后在后面的例子中进行测试。
命令格式: StartDrag(要拖动的影片剪辑,[是否锁定到鼠标位置中央,左,
上,右,下])或写为要拖动的影片剪辑.StartDrag([是否锁定到鼠标位置中央,左,上,
右,下])
命令讲解:在制作动画的过程中,上面两种书写方法可任选一种。其中[]
内的为可选参数,也就是可以写,也可以不写。至于左,上,右,下四个参数是
用来控制被拖对象的移动范围。
2、停止拖拽命令讲解
命令格式: 被拖动的影片剪辑实例名.stopDrag()
这样就可以停止对对象的拖拽动作。
二、实例讲解
下面来用一个简单的例子实验拖拽命令。
操作步骤:
1、新建一个 flash 文档,并在舞台上绘制一个圆形。选中圆形并按F8,
将此圆形转换为影片剪辑,起名为:圆 。确定后将会在舞台上创建一个圆的实
例。
2、选中此实例,并按F9打开动作面板。输入如下脚本:
on (press) {
rag(true);//当鼠标按下(press)之后,这个实例(因为我们把脚本写
在实例本身了,所以这里用 this 代替影片剪辑实例的名字)可以被拖拽,使用
命令如上面的命令解释。对于参数的选择方面,这里只填写了锁定到鼠标位置
中央,如果想选不锁定到鼠标位置中央,可以把true改为 false。有兴趣的朋友
可以更改为 false看看。
}
on (release) {
ag();//同样道理,当鼠标释放(release)之后,将停止拖拽动作。
}
3、好了,现在让我们按 Ctrl+回车来测试一下吧,你将会看到舞台上的圆
被你的鼠标拖动的效果。
4、OK,通过这个例子我们可以简单的应用拖拽动作了。现在需要把这个
例子继续完成,还记得上面命令讲解中的左,上,右,下四个控制拖动范围的参
数吗?现在来制作具有约束拖动范围的效果。
5、现在在舞台上绘制一个200*100大小的矩形,注意只要边框不要填
充。
6、如果我们希望在拖动的时候这个圆只能在矩形内拖动的话,就要先设置
这个矩形的坐标,并记下矩形四个顶点的坐标(这点很重要!)。OK,比如,现
在此例子中的矩形的四个顶点分别如上图所示。那我们要取的四个参数就应该
是:左=50,上=100,右=250,下=200 现在打开动作面板,修
改刚才的脚本如下:
on (press) {
rag(true, 50, 100, 250, 200);//这里我们就使用刚才确定好的4个参数。
4个点的参数就对拖动对象实现了一个矩形区域的移动约束!
}
on (release) {
ag();
}
7、好了,按Ctrl+回车去测试吧!
好了,关于拖拽的讲解先到这里,下面我们来学习如何结合着拖拽动作来检
测对象之间的碰撞!
三、碰撞命令的讲解
命令格式: 目标影片剪辑的实例.hihkest(被拖拽的实例) 这个是比较
简单的检测碰撞命令
目标影片剪辑的实例.hihkest(被拖拽实例的X轴坐标,被拖
拽实例的Y轴坐标,对象的矩形区域范围还是对象本身范围) 这个是比较复
杂点的检测碰撞命令
命令解释: 以上两个命令都是用来检测碰撞的,可以根据需要选择不同的
命令。重点解释一下对象的矩形区域范围和对象本身范围(上面的命令中,false
表示对象的矩形区域范围,true表示对象本身的范围)
四、碰撞命令与拖拽命令的结合使用
(一)、下面通过简单的例子来学习碰撞命令(我们先来学习如何检测是否
碰到对象的矩形区域范围)
1、新建一个 flash 文档,在舞台上绘制一个圆形。选中圆形并按F8将它
转换为影片剪辑,起名:圆 。这样就在舞台上创建了一个圆的实例。
2、选中此实例,为它起一个名字,此例起名为:yuan
3、选择文字工具,并选择文字类型为“动态文本”,在圆的实例下面拖绘出一个
动态文本框。并起一个变量名为:hk
4、选中时间轴的第一桢,按F9打开动作面板,输入以下脚本:
_rFrame = function() {
//这个是在时间轴上的AS编写规则,解释为舞台上每桢都执行下面的脚本
(onEnterFrame)。
if (_t(_root._xmouse, _root._ymouse, false)) {
//根据上面命令的讲解,这个语句就是检测碰撞了。如果鼠标碰到舞台上
yuan这个实例的矩形区域范围的话,就执行下面的脚本。
hk = "接触矩形区域范围";
//动态文本框就显示出“接触矩形区域范围”
} else {
hk = "没有接触到矩形区域范围";
//如果鼠标没有碰到舞台上 yuan 这个实例的矩形区域范围的话,就显示
没有接触到矩形区域范围。
}
};
现在可以按Ctrl+回车去测试我们的成果
(二)、拖拽碰撞检测
现在再来一个例子讲解拖拽碰撞检测, 想偷懒的话可以通过修改上面例子的
代码来学习。
1、现在稍微修改一下上面的例子,以便让我们学习拖拽碰撞检测,在上面
例子的舞台上绘制一个矩形,并把这个矩形转换成电影剪辑,起名为:矩形 。
这样就在舞台上又创建了一个矩形的实例,现在为这个矩形实例起一个名为:
juxing 。
2、选中这个矩形实例,打开动作面板,输入可以拖拽这个实例的脚本。如下:
on (press) {
rag(true);
}
on (release) {
ag();
}
这个脚本就是为了能拖动这个矩形实例。 具体解释请回顾第一个拖动对象例
子的脚本说明。
3、现在来修改脚本,选中时间轴的第一桢,按F9打开动作面板,你将会
看到上个例子的碰撞检测脚本,把它修改为如下脚本:
_rFrame = function() {
if (_t(_)) {
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个顶点,那么我
们就可以来编写脚本命令了,请输入以下脚本:
_yle(1, 0x000000, 100);//设置线条的粗细,颜色和透明度
_(50, 50);//设置开始点的坐标。
_(350, 50);
_(350, 150);
_(50, 150);
_(50, 50); //设置结束点坐标,整个矩形绘制完毕
相信大家通过上面的命令就很容易的用AS绘制出所需要的形状,充分发挥你的想象
力,可以通过 lineto命令来设置多个点,从而创造出各种各样的形状。
熟悉了绘制线条的命令之后我们来用一个例子加深印象。
操作步骤:
1、新建立一个 flash 文档,在舞台上绘制一个圆,选中它并按F8转换成影片剪辑,
起名为:圆 。
2、打开库面板,请将影片剪辑“圆”在舞台上再拖放一个实例,使舞台上存在两个圆的
实例。
3、现在为舞台上两个实例分别起名字为 a和 b
4、选中时间轴第一桢,打开动作面板,输入以下脚本:
function draw() { //自己定义一个函数,这个函数起名为 draw(可自定),函数的功能是要实
现以 a 实例的坐标为起点,向 b 实例绘制线条。
_();//清除舞台上绘制的线条。
_yle(1, 0x000000, 90);//设置线条的粗细,颜色和透明度。
_(a._x, a._y);//以 a实例的坐标为起点开始绘制线条。
_(b._x, b._y);//以 b 实例的坐标为绘制线条的结束点。
}
draw();//执行函数 draw,它将会在a 与 b 之间绘制出一条黑色的线条。
解释:为了减轻编写AS的工作量和程序的重复率,可以将某些功能定义为一个函数,
例如上面的 draw(),在使用的时候,直接执行定义过的函数,就可以完成函数的功能。
5、现在创建拖动效果,选中舞台上的 b 实例,打开动作面板,输入以下脚本:
on (press) {
//点击此实例,开始拖动
rag(true);
}
on (release) {
//释放鼠标,停止拖动
ag();
}
onClipEvent (mouseMove) { //当鼠标移动,也就是这个 b 实例移动的时候,就执行里面的程
序。
_();//执行舞台上定义过的 draw()函数,开始在 a 与 b之间绘制线条。
updateAfterEvent();//强制更新画面,是整个动画更加流畅。
}
按 Ctrl+回车测试动画效果。
二、颜色命令讲解
setRGB() 用来设置实例的颜色值,注意,这个值用16进制表示,例如 0x000000
(黑色)
getRBG() 获取实例的颜色值
下面用一个相对简单的例子来说明颜色命令的使用以及如何填充颜色
要想使用颜色命令,我们必须先构建一个 Color 对象。方法就是 自定义名字 = new
Color("要改变颜色的对象"),构建完 color 对象之后,我们就能使用 setRGB 或 getRGB 来设
置或获取颜色了。
步骤:
1、新建立一 flash文档,背景大小为550*400
2、选中时间轴第一桢,打开动作面板,我们现在要用AS来帮助我们创建一个影片剪
辑的实例。所用到的命令为:
createEmptyMovieClip("实例名称",深度)。创建一个影片剪辑实例,并起名为 hk。输入下面
脚本。
_EmptyMovieClip("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 对象的命令
了。脚本如下:
_eMove = function() {//当鼠标移动的时候就执行下面的脚本命令。
hk_color = new Color("hk");//构建一个名字叫 hk_color 的 Color 对象。
yanse = "0x"+random(100)+random(100)+random(100);//用一个变量 yanse来获取一个数值,
这个数值就是颜色值
hk_(yanse);//设置矩形的颜色。
};
好了,这个例子是完全由脚本编写而成,所有脚本都在时间轴的第一桢
3、按 Ctrl+回车来测试你的影片吧~会看到矩形会随着鼠标的移动而不断进行颜色变化。
八、声音 AS 的编写与控制
一个好的 flash作品,缺少了声音,就如同人不会讲话一样。而 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 的声音对象。
Sound("mysound");//将这个声音对象与库里的标识符为
“mysound”的声音连接。
4、现在需要在舞台上放置两个按钮分别控制声音的播放与停止。
5、此时,舞台上将有播放和停止两个按钮,选中 Play按钮,打开
动作面板,输入以下脚本:
on (release) {
();
}//播放声音
选中 Stop 按钮,输入以下脚本:
on (release) {
();
}//停止播放声音
6、OK,一个简单的控制声音播放与停止的例子就完成了,快
按 Ctrl+回车来测试吧。
三、创建一个稍微复杂的例子,用来滑动按钮来控制声音的音量。
操作步骤:
1、新建一个 flash文档,并按 Ctrl+R 导入一个声音文件。
2、参照上个例子,打开库,并把导入的声音文件设置一个链界
标识符。这里设置标识符为“mysound”。
3、选中舞台时间轴第一桢,打开动作面板,创建一个新的声音
对象,连接库中声音,并播放这个声音。输入脚本如下:
music = new Sound();
Sound("mysound");
(1, 10);//播放声音,从第一秒开始播放,并循环10次
4、现在需要一个按钮做为滑动按钮,用来控制声音的音量!按
钮可以自己制作或使用公用库中的按钮, 此例中我使用公用库中的按
钮。请在舞台适当位置放置一个按钮实例。
5、选中按钮,打开动作面板输入以下脚本:
on (press) {
rag(false, left, top, right, bottom);//开始拖动这个按钮, 并且要
规定它的拖动范围,分别由四个变量控制,4个变量的初始值稍后设
置。
drag = true;//用一个变量来判断这个按钮是否被拖动了。如果它被拖
动了,变量值为 true(真)
}
on (release, releaseOutside) {
ag();//当松开按钮或在按钮外部松开,就停止拖动。并且下
面的 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) {//如果按钮被拖动了,就开始执行下面的设置音量的
算法,用来控制音量。
_ume(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层的第一桢,打开动作面板,开始编写脚本,首先,我们要让舞台上的动态文本框显
示日期及时间。
_rFrame = function() {//需要让影片不停执行下面脚本。
mydate = new Date();//首先构建一个名字叫 mydate的日期对象, 因为以后我们就要用 mydate
这个实例来控制了。
myear = lYear();//获取本地机器上的年份,并放在 myear 变量中。
mmon = th()+1;//获取本地机器上的月份,并放在 mmon变量中。因为获取的
值是 0 代表一月,1 代表二月,依此类推,所以要加上 1 才正确
mdate = e();//获取本地机器上的本月的第几天,并放在 mdate变量中。
mou = rs();//获取本地机器上的小时数值,放在 mou变量中,这个命令能获取
0--23之间的数值。
mm = utes();//获取本地机器上的分钟数值,并放在 mm变量中。
ms = onds();//获取本地机器上的秒数值,放在 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 的编写。在后面的课程中我们就要提高性的讲解,同时
也希望大家继续关注。
十、点语法以及路径
点(.)语法、 路径
通过本节的学习要掌握(.);能正确地输入影片剪辑的实例名称;理解相对路径和绝对路径
的概念,理解分层结构中的包含关系和并列关系,
点(.)语法
动作脚本中,点(.)通常用于指定对象或影片剪辑相关联的属性或方法,或者标识影片剪
辑、变量、数对象的目标路径。点语法表达式是以对象或影片剪辑的名称开始,后跟一个点,
最后以要指定的元素 结束。
例如:(1)张三的身高。这句话用 AS 语言表示为:张三.身高
(2)安徽合肥中澳学院。这句话用 AS 语言表示为:安徽.合肥.中澳学院
元件命名
在上面的例子中, “张三”是人名, “身高”是他的属性,那么,在 FLASH 中怎么样
用 AS 语言来表示一个影片剪辑的高度呢?
类似地我们要给影片剪辑取一个名称,如果在主场景中有放入一个影片剪辑,那么这个影片
剪辑相 对于场景是场景的一个实例,在场景中选中影片剪辑就可以在属性面板中键入实例
名。
好了,小球有了实例名称了,我们现在来表示它的高度(_height)。
注意: 在命名实例名时,最好意义明确,可以用英文、汉语拼音和中文,并且不同类型的元
件加不同的前后缀,在实际编程中我们往往不太注意这些,规范的命名不仅容易阅读,还能
为其增加一些特定的后缀触发代码提示。
命名影片剪辑实例;加 _mc 后缀,例如 my_mc。
命名按钮时,应使用 _btn 后缀。例如 my_btn.。
命名文本时,应使用 _txt 后缀。例如 my_txt。
例如上例中小球的实例名如果加上后缀_mc就会出现影片剪辑属性的代码提示
安徽.合肥.中澳学院
小球._height
张三.身高
路径
“路径”指“道路”,“路线”其含义是:如何到达目的地,这个目的地叫做路径的目标,
在 flash 中 引用了目标路径的概念,目标路径:是 SWF 文件中影片剪辑实例名称,变量和
对象的分层结构地址。
✧ 目标:指的是将要被动作脚本控制的对象,有影片剪辑实例,变量等。
✧ 路径:指如何到达目标,即我们如何从控制点到达被控制点。
✧ 分层结构:flash文件是有一个个影片或影片剪辑组成的,它们有各自的时间轴、变量、
数组等,它们 的位置关系有两种,一是父子关系;二是并列关系。
所谓父子关系指的是包含与被包含的关系,例如: 把影片剪辑 mc1 拖放到影片剪辑 mc
中,则称 mc1 是 mc 的子级,反过来 mc 称作 mc1 的父级。它们的层次结构用点语法表
示,圆点前面的对象包含着圆点 后面的对象,如_1 即_root 包含了 mc,而 mc
包含了 mc1。
所谓并列关系指的是对等的关系,它们之间没有包含与被包含的关系,如:__a 和
__b。
在 flash 应用中,可以从 1 个时间轴向另一个时间轴发送信息,发送信息的时间轴叫控制
时间轴,接 收信息的时间轴叫目标时间轴。也就是说控制时间轴发出的命令可以控制目标
时间轴的动作。要实现这种 控制功能必须编写目标路径。目标路径分为绝对路径和相对路
径。
绝对路径
绝对目标路径指的是从根时间轴开始,一直延续到列表中目标时间轴中的实例为止。 绝对目
标路径简单易懂但重用性差。
在编写绝对目标路径时,首先写上_root,一方面表示这个路径是一个绝对路径,另一方面
表示这个路径的最顶层时间轴是本场景中的根时间轴_root。
相对路径
相对目标路径取决于控制时间轴和目标时间轴之间的关系, 相对目标路径就是站在控制点去
看被控制 点。 若向父级方向看也就是向根时间轴方向看, 在相对路径中, 使用关键字 this 指
示当前时间轴:使用别 名_parent 指示当前时间轴的父级时间轴,可以重复使用_parent,每
使用一次就会在同一层的影片剪辑的层 次中上升一级,有多少元件就写多少_parent,若向
下看只需要用点运算符,中间有多少元件就写多少实例名。
例如:
this._parent
this._parent._parent
1
编写目标路径的方法
在 Flash8 中可以用多种方法编与目标路径,直接手工输路径,或者使用“插入目标路径”
对话框。我 们只需要为影片剪辑和变量等正确的输入名称,使用动作脚本面板的“插入目
标路径”按钮,找到你要控 制的对象即可。
其具体步骤如下:
(1)选择想为其分配动作的影片剪辑,帧或按钮实例,它将变为控制时间轴。
(2)在“动作”工具箱(面板左侧)中选择需要目标路径的动作或方法。
(3)单击动作脚本中想插入目标路径的参数框或位置。
(4)单击动作脚本编辑窗格上面的“插入目标路径”按钮,打开“插入目标路径”对话框。
(5)选择“绝对”或“相关”目标路径模式。
(6)在“插入目标路径”显示列表中选择一个影片剪辑,单击“确定” 。
观察目标路径
由上图在以看出影片剪辑之间的分层结构:mc 中包含了两个子级 mcA、mcB;而 mcA 中
又包含了三 个子级 mc1、mc2、mc3。
按 F9 打开动作面板,点击“插入目标路径”按钮后,在弹出的“插入目标路径”对话框
中我们可以 清楚地看到分层结构。
当我们选中一个目标后,再选择“相对”或“绝对”按钮后,在“插入目标路径”对话框的
最上面一 栏里就会显示出路径,例如:控制点为 mcA,控制目标为 mc1,路径为:
相对路径:1 绝对路径:_1
十一、深入了解时间控制
通过本课的学习,掌握在按钮上添加代码的方法;理解 on 命令的函数功能;
掌握时 间轴控制命令的功能,语法格式,掌握在帧上添加命令基本操作,能使
用帧命令和按钮命 令控制一些简单的时间轴动画。
on 事件处理函数
事件是指软件或硬件发生的事情,它需 Macromedia Flash 的应用程序对事件有
一定的 响应。硬件发生的事件如按下鼠标、单击鼠标、拖动鼠标等。软件发生
的事件如影片剪辑 刚刚被载入场景、影片剪辑被卸载等。为了使应用程序对事
件做出反应,必须使用事件处 理函数。
下面我们就来学习 on 事件外理函数。 双击代码选择区中的“全属函数”|“影
片剪辑控制” |“on”命令后,弹出选项
On 事件动作使用较多,它一般直接作用于按钮,也可以作用于影片剪辑实例。
其调用格式如下:
理解 on 事件中的参数意义
在创建一个动态文本,在属性面板里输入变量名:txt.再创建一个按钮实例,选中按
钮,
打开动作脚本面板输入代码:
on (press) {
txt = "发生了鼠标按下(press)事件";
}
on (release) {
txt = "发生了鼠标释放(release)事件";
}
on (releaseOutside) {
txt = "发生了鼠标外部释放"+newline+"(releaseOutside)事件";
}
on (rollOver) {
txt = "发生了鼠标滑过(rollOver)事件";
}
on (rollOut) {
txt = "发生了鼠标滑离(rollOutr)事件";
}
on (dragOver) {
txt = "发生了鼠标拖过(dragOver)事件";
}
on (dragOut) {
txt = "发生了鼠标拖离(dragOut)事件";
}
on (keyPress "
txt = "发生了按左键事件"+newline+"(keyPress"
时间轴控制命令
时间轴控制语句是较基础的 ActionScript 控制 语句。时间轴控制语句是掌握
ActionScript 语句的基 础, 它们的主要任务是控制帧的停止、 播放、 跳转等。只
要带有时间轴的动画效果,就可以用时间轴控制 语句来进行控制。时间轴一共
有两种,一种是场景中的 时间轴, 我们叫做主时间轴。 另一种是元件中的时
间轴, 例如影片剪辑、图形元件中的时间轴。所以,时间轴控 制语句也可以分
成两类,一类是控制主时间轴,一类控制影片剪辑时间轴。打开动作脚本箱,点
击“全局函数”“时间轴控制”我们会看到时间轴控 9 条时间轴控制命 令。在
这一课中我们将分别介绍它们的功能及使用方法。
play( ) 与 stop ()
play 和 stop 在 Flash 中用于控制动画的播放和停止,play 命令使播放头从它当
前位置 向前移动。stop 停止当前正在播放的 SWF 文件。此动作最通常的用法
是用按钮控制影片 剪辑。是 Flash中控制动画最基本的命令。
使用方法如下:路径.play() 路径.stop()
帧命令
我们知道一个有动画的影片剪辑,场景时间轴只有一帧 这个影片剪辑也能正常
播放, 但如果是图形元件中做的动画,在场景中必须有与元件时轴同样的帧频
数才能正常播放。
这就说明了影片剪辑有独立的时间轴。而图形元件的时间轴必须依赖父级时间
轴,所以, 场影中的影片剪辑实例, 必须控制影片剪辑的时间轴。 要在场景
中控制影片剪辑的时间轴, 就要给影片剪辑输入实例名称。
下面我们做一个实例,通过该例,我们来掌握在帧上添加命令的方法,初步了解
控制当前时间、根时间轴控制元件时间。元件时间轴控元件时间轴的方法。
我们播放动画时,可以看到每个动画都是动的,现在我们来进行控制。
(1)打开素材, 分别选中场景中的小花, 和树叶, 在属性面板里输入实例名
“花” “叶” 。
(2) 进入名称为“叶引导线”的影片剪辑元件的编辑区中,点击“AS 层”的
第 1帧打开动作面板。输入命令:
stop();//停时当前时间轴
在第 50 帧插入空白关键帧,选中此帧,打开动作面板,输入命令:
this._();//父级时间轴(根时间轴) 播放
在主场景“AS 层”的第 1 帧,添加命令:
this.花.play()//当时间轴中的影片剪辑实例"花"播放
在主场景“AS 层”的第 170 帧添加命令:
stop();//停止当前时间轴
this.叶.play();//当前时间轴中的实例"叶"播放
测试影片看看效果。
总结:通过本课学习,要掌握自身时间轴的控制,子级时间轴的控制,父级时
间轴的控制, 对初学的朋友,最简单的方法是:正解输入实例名后,通过“插
入目标对话框,找到你的控制目标,这时软件会自动给你编写好路径,你只需在
路径后面加上一个小点“.”然后加 上 stop()或 play()命令。 帧命令是播放头来
触发的,播放头经过你的命令帧,这帧上的命令就被执行了。
按钮的交互控制
我们利用此动画练习在不同的控制点上来控制 影片。现在我们任意选两个控
制点,如果选择 mcA 中放一个停按钮,mc1 中放一个播放 按钮,用这两个按
钮来控制所有影片剪辑。
停止按钮上的代码 :
on (press) {
_();
_();
_();
_();
_();
_();
}
播放按钮上的代码:
on (press) {
_();
_();
_();
_();
_();
_();
}
说明:上例中使用的都是“绝对”路径,如果你对路径的概念掌较好,可以选
择性的
使用“相对”路径或“绝对”路径。
本课涉及的语法及规范
➢ 圆括号 “ ()” :圆括号在动作脚本中作用非常大,在定义函数时在将参
数全部放到圆 括号内;在调用函数时要将传递给函数的所有参数包含在小括号
里; 在设置表达式优先级或增强动作语名的易读性时都需要使用到圆括号。 例如:
本课学的 on 函数用来定义鼠标或键盘响应事件, 其中选择的鼠标事件就是参
数。有时也可以没有参数例如:函数 play()。
➢ 分号 “;” :动作脚本中的分号是用来作为语句结束的标记, 在 Flash AS 脚
本中,任何 一条语句都是以“;”号结束的。虽然有时省略了“;”号,Flash 也
可以成功的编译这个脚 本,但这是不规范的。
➢ 花括号“{ }” ,动作脚本中的一组语句可以被一对花括号“{……}”包
括起来,成为一 个语名组。在由多个动作状态组成的语句组中,使用花括号可
以有效地来区分各命令的层级和从属关系。
十二、无条件转移
在上一课中我们学习了时间轴控制命令中的 play()和 stop()命令,这一课中我们
学习时间轴控制命令中的另外6个命令。通过本节的学习掌握跳转命令的功能;
能进行一些简单的交互控制。
正常情况下时间轴从第一帧开始按顺序向下播放,使用跳转命令可以打破原来
的播放顺序,从而实现各种特效,跳转命令有两个它们是 gotoAndPlay 和
gotoAndStop,应用格式为:
scene:String [可选] — 一个字符串,指定播放头要转到其中的场景的名称。
frame:Object — 表示播放头转到的帧编号的数字,或者表示播放头转到的帧标
签的字符串。
gotoAndPlay|(“scene”, frame)的函数意义是:将播放头转到场景中指定的帧并
从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。
gotoAnd Play
在动作面板的 “代码选择区” 中选择 “全局函数” | “时间轴控制” | “gotoAndStop”
命令后,在此可以选择此命令的参数。
该参数共有两个提示,其含义如下所述。
“gotoAndPlay(帧);” :按照该提示,可以在括号内输入需要跳转的帧数,例如,
当播放到当前帧的时候,跳转到第 20 帧,则应当在当前帧上添加代码
gotoAndPlay(20);。
“gotoAndPlay(“场景” ,帧)” :按照该指示可以在括号内指定播放某一场景
中的某一帧。将播放头
转到场景中指定的帧并停止播放。例如:当播放到当前帧的时候自动跳转至
scene_2(场景2)的第 20 帧, 则在当前帧上添加代码: gotoAndPlay("场景_2", 25);
如果未指定场景,播放头将转到当前场景中的帧。
注意:
✧ 在进行跳转时应该尽力避开场景和帧编号,而使用帧标签,帧标签可以穿越所
有场景,可以减少 错误的发生,还可以使 flash 运行速度增快。还便于修改。
✧ 只能在根时间轴上跳转时使用 scene 参数,不能在影片剪辑或文档中的其它
对象的时间轴内使用该参数。
gotoAndPlay([scene:String], frame:Object) : Void
gotoAndStop([scene:String], frame:Object) : Void
gotoAndPlay("场景",帧);
gotoAndStop("场景",帧)
2 ✧ 如果从元件时间轴跳转元件时间轴时,应该先加路径再写跳转命令。例如
从元件时间轴转到根时间轴的标签为“f”的帧上停止,代码该这样写:
_dStop("f");
gotoAndStop
在动作面板的代码选择区中选择“全局函数”|“时间轴控制”|“gotoAndStop”
命令后,在代码显示区中的参数意义与 gotoAndPlay的一样,这里就不再重述。
例如:当播放到当前帧时要自动跳转到“f2”帧处停止,则在当前帧上添加代码:
gotoAndStop("f2");//跳转到帧标签为“f2”的该帧处停止。
又如:gotoAndStop("场景 2", 1);//播放头从当前帧跳转到“场景 2”的第1 帧,
并在该帧处停止。
场景面板的操作
场景:执行“窗口”|“设计面板”|“场景”菜单命令,就会调出“场景面板” ,
在该面 板中可以进行场景的添加、复制、删除、重命名、排序等操作。
为了方便组织文档可以使用场景,例如, 可以使用单独的场景用于简介、 出现
的消息以及片头片字幕。
当文档含有多个场景时,播放时是按场景的先后顺序依次进行播放的,而且所有
场景中的帧是按场景顺序 连续编号的, 例如:如果文档包含两个场景, 场景 1 中
有 10 帧,场景 2 中有 20 帧,则场景 2 中的帧的编
号为 11 到 30。
nextFrame 和 nextScene
这两个命令通常与 on 命令结合,并作用于按钮上。单击鼠标后,播放下一帧
(nextFrame)或下一个场景(nextScene)。prevFrame 和 prevScene
这两下命令通常用来控制播放上一帧或上一个场景。其功能刚好与 nextFrame
和 nextScene相反
。
场景跳转
制作播放面板的操作步骤如下:
(1)点击“窗口”|“其它面板”|“场景” ,打开的场景面板,点击添加场景
按钮,新建 3 个场景,这样共是 4 个场景。在场景 4 的第 1 帧输入帧标签
“s4_f1” ,分别在场景 2~场景 4 中创建一个按钮。
(3)进入“场景 1” ,在“图层 1”的第 1 帧制作一个播放界面
(4)给按钮添加代码
按钮 1 上的代码:
on (release) {
gotoAndStop("场景 2", 1);
}
按钮 2 上的代码:
on (press) {
gotoAndStop(3);
}
按钮 3 上的代码:
on (press) {
gotoAndStop("s4_f1");
}
分别进入每个场景中,选种按钮添加代码:
on (press) {
gotoAndPlay("场景 1", 1);
}
在“场景 1”的第 1帧添加代码。
stop();
测试影片观看效果。
在“场景 1”中的三个按钮,分别用了参数的三种形式来练习,建议在使用时
最好用帧标签来跳转。
制作简易相册
本例的目的是为了练习跳转命令及上一课中学习过on命令。
效果说明:点击滚动按钮可以看到对应的图片,点击左边的按钮可以进行前一张
后一张的切换,并在动
1.新建一个 flash文档。设置文档属性为:宽 465、高 280,背景色白色。
2.导入素材,把本例的素材全部导入到库。
3.新建一个名为“图片”的影片剪辑元件,在此元件“图层 1”新插入 9 个空
白关键帧,分别在这 10 个关空白关键帧中依次分别放入库中的“tp1”~“tp10”
这 10 张图片,并居中对齐。
4.新建一个名为“按钮 1”的按钮元件,在按钮元件“图层 1”的弹起帧中,
从库时提进“tp1”位图,在属性面板里设置宽70、高 45,居中对齐。在“点击
帧”插入帧。插入“图层 2”在“图层 2”的弹起帧给制一个宽 70、高 45 的
无笔触的矩形,填充色为浅灰色,并把透明度调为 30%,在“鼠标经过” 帧插
入空白关键帧。5.用同样的方法制作另外 9 个按钮,大家可以用复制元件,替换图片的方法来
制作。
6.新建一个名为“按钮组”的影片剪辑元件,在其编辑区中,从库里提进“按
钮 1”~“按钮10” ,并用对齐面板排列成一横排,再把前 6 张复制后接在后
面。7.(1)新建一个名为“滚动图片”的影片剪辑元件, 在“图层 1”绘制一个宽
465、高 50 的无笔触的矩形框,填充色为淡紫色,并把透明度设为 30%。居中
对齐。
(2)插入“图层 2”在此图层的第 1 帧上,从库里提进“按钮组”影片剪辑元
件,并与下面的矩形条左对齐。 在第 100 帧插入关键帧, 并在些帧上把图片
按钮组向左移动,(移动多少要参照第 1 帧上的位置,确保循环播放时没有跳跃
的视觉感。)如下图所示。然后创建动画。
第 1 帧上的图片位置第 100 帧上的图片位置8. 新建一个名为 “蒙板” 的影片剪辑元件, 在其编辑区里绘制一个宽 287、 高 208
的无边框矩形,居中 对齐。填充色为四个色(这四个色自定)的状填充并把每
个色的透明度设为 45%左右。在第 10 帧插入关 键帧,在此帧上把各色的透明
度调为 0%。创建形状动画。并在最后一帧输入停止命令。
stop();
5 9.场景组装
(1)把场景“图层 1”更名为“背景” ,从库里提进“背景”图形元件居中对
齐。
(2)插入“图层 2”更名为“滚动菜单” 。从库里提进“滚动菜单”影片剪辑
元件,相对于场景,左 对齐、底对齐。并在属性面板里输入实例名“菜单” 。
(3)插入“图层 3”更名为“图片” ,从库时提进“图片”影片剪辑元件,放
在对应背的左上角的矩形框里。并在属性面板里输入实例名“图片” 。
(4)插入“图层 3”更名为“蒙板” ,从库时提进“蒙板”影片剪辑元件,放
在“图片”上,并在属性面板里输入实例名“蒙板” 。
(7)插入“图层 7” ,更名为“AS”
场景组装完毕
添加代码
(1)选中 AS 层的第 1帧,打字开动作面板,在动作面板中输入代码:
_();
onEnterFrame = function () {
_ = _._currentframe;
};
(2)进入“按钮组”影片剪辑元件的编辑区,用选择工具选中“按钮 1” (最
左边的一个),打开动作 面板,在动作面板中输入代码:
on (rollOver) {
_root.菜单.stop();
}
on (release, rollOut) {
_root.菜单.play();
}
on (press) {
_root.图片.gotoAndStop(1);
_root.蒙板.play();
}
(3)把“按钮 1”上的语句复制粘贴到其它按钮上,然后把语名中的第 8 行
_dStop(1);
改为“图片”元件中放图片的对应放图片的那一帧,例如按钮 5 上的语句应改
为:
on (rollOver) {
_root.菜单.stop();
}
on (release, rollOut) {
_root.菜单.play();
}
on (press) {
_root.图片.gotoAndStop(5)
_root.蒙板.play();
}
_root.蒙板.play();
}
实例制作完毕,大家测试景片,观看效果。
十三、变量
通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态
文本显示变量、输入文本输入变量,会使用调试命令 trace。了解 Flash中的数据类型.
认识变量
在日常生活中人们处理信息的时候,必需首先把信息保存起来,比如你将一群羊分成两部分,
你必须把它们赶到不同的领地,这些领地暂时保存着羊群,即便你是凭空想象,你想象时的信
息也要暂时保存在脑细胞中,也就说要处理任何信息首先就得保存信息,动作脚本也不例外,
动作脚本使用变量保存信息,所以说变量是保存数据的一种容器,容器本身始终不变,但内容
可以更改,这个比喻是非常形象的,现在有一个容器名称为 a,放进一些盐它就是盐罐子,放进
一些醋它就是醋罐子了。在 flash 中,通过动作脚本可以建立很多“容器”来存放 flash 中
的信息,比如影片剪辑的透明度、坐标等,也可以存放人的名字、年龄等。为了区别不同的
“容器”必须为每个“容器”取一个自己的名字, 即变量名。怎么样来定义“容器”呢?
下面来定义一个容器,它的名字是 myAge,用来存放年龄。定义如下:
var myAge;
var 是用来定义变量的关键字。
MyAge 便是变量名。
那么这个变量怎么存放年龄呢?在定义变此时可以给定一个值,即变量值,如下所示:
var myAge=66;其中“=”号代表赋值运算符,把 66 这个值赋给变量 myAge。
注意 :首次定义变量时,为该变量指定一个已知值,这就是所谓的初始化变量。
变量的命名的规则
用不同的符号对不同的事物进行标记,用作标记的符号就是标识符,标识符是用于表示变量、
属性、对象、函数或方法的名称。
命名变量名要遵守如下的规则:
(1)不能是as 关键字,所谓关键字也称保留字,指as 预先定义好的标识符。
(2)不能以数字开头,第一个字符必须是字母或下划线“_”和美元符“$” 。
(4)中间不能有空格。
(5)变量名中不能使用标点符号,
(6)不应将动作脚本语言中的任何元素用作变量名称。
正确的示例:
a,m,ba,assw,a_aa,my_mc,$abc,$_ss,$_mc等等
my_txt 保存文本的变量
错误的示例:
2_m //不能用数字开头
my-a //不能用减号分割
//不能使用标点符号
a b //不能有空格
如:
var 年龄=20;
其中年龄就是变量名。
注意 : 在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀,在实际编程中
我们往往不太注意这些, 规范的命名变量使其他人更容易阅读, 命名变量时通过为其增加
一些特殊的后缀触发代码提示。下表中为支持代码提示所需后缀trace()函数
在编写脚作脚本中,我们会大量用到 trace()命令。trace()实际算是一个调试命令,它的输出
都会在“输出面板”显示出来。 而真正发布作品的时候 trace()却不再输出。是最方便的调
试命令,trace()命令非常简单:
应用格式:
trace(expression:Object)
参数:expression 要显示的变量或者表达式。
下面我们使用 trace 函数输出变量值
在主场景第 1 帧打开动作面板,输入下列代码:
var a=5
var b="欢迎大家来到爱国者安全网学习 AS"
var c=(3+5)
trace(a);
trace(b)
trace(c)
变量赋值
使用变量保存信息就叫做给变量赋值。在 Flash中给变量赋值常用的方法有:
var a=5;//把常量 5 赋值给变量 a。
trace(a);//输出面板输出 5
set(“a”,5);//用 set()方法为变量赋值为 5。
trace(a);//5
this["a"+1]=0
trace(a1);//0
确定变量的范围和声明变量
变量的范围是指变量在其中已知并且引用区域。在动作脚本中有 3 种类型的变量范围:
✧ 本地变量在声明它们的函数体(由大括号界定)内可用。
✧ 时间轴变量可用于该时间轴上的任何动作脚本。
✧ 全局变量和函数对于文档中的每个时间轴和范围可见。
本地变量
要声明本地变量,请在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码块,
它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的动作脚本结束时到
期。本地变量也可防止出现名称冲突,在定义本地变量时可以为其指定数据类型,这有助于
防止将类型错误的数据赋给现有变量
trace(expression:Object)
var a=5
var b="欢迎大家来到爱国者安全网学习 AS"
var c=(3+5)
trace(a);
trace(b)
trace(c)
时间轴变量
时间轴变量可用于该时间轴上的任何动作脚本。要声明时间轴变量,可以使用 set variable
动作或赋值“=”动算符,应在该时间轴中的所有帧上都初始化这些变量,应确保首先初始
化变量,然后尝试在动作脚本中访问它。声明时间轴变量也可以使用 var
例如:如果将代码“var x=10;”放置在第 20 帧上,则附加到第 20 帧之前的任何帧上的动
作脚本都无法访问变量
全局变量
全局变量和函数对于文档中的每一时间轴和范围而言都是可见的。若要创建具有全局范围
的变量,请在变量名称前使用_global 标识符,并且不使用 var 语法。
例如
在根时间轴第一帧上定义两个变量,然后将 trace()放在不同地点去返回它们的值,以观察它
们的区别
Var a=5
_global.b=3
在程序中使用变量
1.必须在动作脚本首先给变量赋值,然后才能在表达式中使用它。在 flash 中可以使用变
量动态的设置其它动作中的不同参数。
例如:
on (release) {
k = random(30)+50;
setProperty("mc", _xscale, k);
setProperty("mc", _yscale, k);
}
2.如果使用未赋初值过的变量该变量的值将是 NaN或 undefined。并且动件脚本可能产生
意外的结
果。
例如:
var k=x*x;
trace(k);//NaN
var x=6;
在下面的示例中申明变量的语句必顺排在第一行,这样 k 就可以替换为一个值;
var x = 6;
var k = x*x;
trace(k);//36
用动态文本显示变量值
(1) 启动 flash,新建一个文档,文档属性默认。
(2) 单击文本工具,打开“属性”面板,在其文 档类型选项中选择“动态文本”
(3) 在舞台中单击建立一个动态文本,在“属性”面板把变量名设为 myAge,
选择图层 1的第 1 帧,打开动作面板,输入以下代码:
var myAge=20
测式影片,在动态文本中可以看到刚才定义的变量值。
用输入文本输入变量值
(1)在场景“图层 1”的第一帧,在舞台上建立一个动态文本和输入文本,在属性面板里
为动态文本输入实例名“输入” ,为输入文本输入实例名“输出” 。
(2)制作一个“提交”按钮和“清空”按钮。然后为按钮添加代码
提交按钮上的代码:
on (press) {
输出 = 输入;
}
清空按钮上的代码 :
on (press) {
var 输入 = "";
var 输出 = "";
}
(3)插入“图层 2” ,在图层 2 的第 1 帧,添加代码:
输入=""
测试影片,观看效果。
圆柱表面积计算公式
在输入文本中输入半径和高的值后,点击计算按钮,对应的面积值就会显示在动态文本中.
1)在舞台上建立两个输入文本,分别在属性面板里输入变量名“r”和“h” 。再建立一个
输入文本,在属性面板里输入变量名“s” ,自己安排好文本的位置。
(2)制作一个“计算”按钮和“清空”按钮,拖入舞台,放到适当位置。
(3)添加 AS 代码:
计算按钮上的代码为:
on (release) {
s = 2**(r*r)+2**r*h;
}
清空按钮上的代码为:
on (press) {
r = "";
h = "";
s = "";
}
代码解释:在表达式 2**(r*r)+2**r*h 中, 代表圆周率,在计算精确
度不高时, 通常是取它的近似值为 3.14。 而 2**(r*r)表示两底面的面积和;
2**r*h表示侧面积。
数据类型
我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输
入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序
都有一个共同特点;他们都需要处理数据.flash 中根据数据的处理方法的不同,对数据进行了
分类,他们是;数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义和空值。
计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所
以我们常说"变量是保存信息的容器" , 为了区别分不同类型的变量,就有了数据类型,变量有
多种数据类型,数据类型描述变量或动作脚本元素可以包含的信息种类,下面讲解常见的数据
类型.函数的值是由变量决定的,那么什么来决定变量呢?那是数据, 下面我们就说说 AS
中使用到的数据类型。AS 中的数据有两大类,一 类称之为原始类型(也叫初始类),另
一类叫做参考类型 (也叫引用类)。
原始类型数据分为字符串、数值和逻辑型三种,它们都有常量 值,能够为其所代表的元素
赋一个实际值。
参考类型数据包括影片剪辑和对象两种, 它们有一个可变的值, 包含了对元素实际值的引用。
此外还有两个特殊类型的数据:空值和未定义值。
字符串型(string) :字符串是诸如文字、字母、数字和标点符号等字符的序列。在动作脚
本语句中输入字符串的方式是将其放在单引号或双引号之间,字符串被当作字符,而不是变
量进行处理。例如“学习 Flash”“abcd”的等。还可以使用”+”等运算符对字符串进行操
作。
例如
trace("欢迎大家");
trace('来爱国者安全网学习');
trace("欢迎大家"+'来爱国者安全网学习');
数值型( (N umber) ):您可以使用加(+)、减(-)、乘(*)、除(/)、求模(%)、递增(++)和递减(- -)
等算术运算符来处理数字,也可使用内置的 Math 和 Number 类的方法来处理数字。下面
的示例使用 sqrt()(平方根)返回数值 100 的平方根 10。
trace((100));// 返回数值 100 的平方根 10
布尔型(boolean) :只有 “真 (true) ”“假(false) ” 两种值的数据。布尔值是 true 或 false
中的一个,动作脚本也会在适当时将值 true 和 false 转换为 1 和 0。 布尔值经常与动作脚
本中的比较运算符一起使用。
例如
trace(3<1);
trace(-8<0);
对象(Object ):: 对象是属性的集合。 每个属性都有名称和值, 属性的值可以是任何的 Flash
数据类型,甚至可以是对象数据类型。这样就可以使对象相互包含(即将其嵌套)。若要指
定对象及其属性,可以使用点(.) 运算符。
影片剪辑 ( Movie Clip) :影片剪辑是 Flash 应用程序中可以播放动画的元件,是唯一引用
图形元素的数据类型。MovieClip 数据类型允许您使用 MovieClip 类的方法控制影片剪辑
元件,可以使用点(.) 运算符调用这些方法。影片剪辑是 Flash中最活跃的元素之一。
例如:
trace(_._x);
trace(_._height);
Undefined:表示未定义的数据类型,如下情况返回 undefined 值:
(1)对象属性不存在,
(2)声明了变量但从未赋值。
例如没有定义变量 a 的情况下。
trace(a);// Undefined。
trace(a+3);//NaN
测试数据类型
我们用如下函数可以判断数据类型:
typeof();
typeof()通常与 trace()结合使用
本例使用 trace 语句与 typeof 函数共同测试数据类型。为大家学习 Flash 数据类型实现更
加深入的认识。
注意:我们的所有测试必须在 fla 源文件编辑状态下单击“控制”|“测试影片”才能在输
出面板看到效果,测试 swf文件是不会得到任何输出的。
typeof用法
typeof(表达式)
表达式:一个字符串、影片剪辑、按钮、对象或函数。
说明: 运算符; 放在单个参数前的一元运算符。typeof 运算符让 Flash 解释器计算 表达式;
其结果为一个字符串,指示该表达式是字符串、影片剪辑、对象、函数、数字,布尔值。
示例:测试数据类型
(1)在舞台中放一个影片剪辑元件,并输入实例名“my_mc” 。
(2)在舞台中放一个按钮。并输入实例名“my_btn” 。
(3)在舞台中绘制一个动态文本,输入变量名“txt1”在动态文本中任意输入文字。
(4)在舞台中绘制一动态文本,输入文本实例名“txt2” 。在动态文本中任意输入文字。
在第一帧中输入脚本:
trace("测试结果");
trace(typeof (txt1));
trace(typeof (my_mc));
trace(typeof (my_btn));
trace(typeof (txt2));
trace(typeof ());
trace(typeof (3<1));
trace(typeof (System));
trace(typeof (stop));
显示对各类表达式使用 typeof 运算符的结果如下表所示。
十四、运算符(一)
运算符表达式
运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作
数。例如,在语句“foo+3”中, “+”运算符会将数值文本的值添加到变量 foo的值中;foo
和 3 就是操作数。
用运算符连接变量或者常量得到的式子叫做“表达式” 。各种表达式用运算符连接在一
起还叫做表达式,例如:圆柱体表面积计算公式 2**r*r+*r*h。
其中“2”和“” (表示圆周率π)都是常数,而“r”和“h”分别表示半径和高,
是变量。 “+”和“*”分别表示加法运算和乘法运算,是运算符,这个式子就是表达式。
运算符的优先顺序
在同一语句中使用两个或多个运算符时, 各运算符会遵循一定的优先顺序进行运算, 例如加
(+),减(-)的优先顺序最低, (*),除(/)的优先顺序较高,而括号具有最高的优先顺序,当一
个表达式中只包含有相同优先级的运算符时,动作脚本将按照从左到右的顺序依次进行计
算;而当表达式中包含有较高优先级的运算符时,动作脚本将按照从左到右的顺序,先计算
优先级高的运算符,然后再计算优先级较低的运算符;当 表达式中包含括号时,则先对括号
中的内容进行计算,然后按照优先级顺序依次进行计算。
算术运算符
可以执行加法、减法、乘法、除法运算,也可以执行其他算术运算。Flash 中的算术运算符
及简单的用法如下图
加法运算实例
在场景中绘制三个动态文本,变量名分别为 c1、c2、c3。再绘制两个输入文本,变量名为
a、b。放入四个按钮,分别选中按钮输入 AS:
(1) 数字类型相加
on (press) {
c1 = 3+2;
}
(2) 字符串相加
on (press) {
c2 = "学习"+"flash";
}
(3) 输入文本中的变量相加
on (press) {
c3 = a+b;
}
(4) 字符串类型转化为数字类型
on (release) {
c3 = Number(a)+Number(b);
}
说明:在执行加法运算时,如果,操作数是数字类型,那么执行的加法就是数字相加,如果
操作数是字符串类型,那么这里的加法就是合并字符串;如果,操作数中有字符串,有数字,
那么程序就会把其中的数字当成字符串; 动态文本和输入文本中的变量值, 程序都把它看成
字符串类型,要执行数字相加时,要转化成数字类型。例如上例中的
c3 = Number(a)+Number(b);
区别 x++和++x
场景第 1 帧上
x=1
y=1
(1) x++
on (release) {
a_txt = ++x;
}
(2) ++x
on (release) {
b_txt = y++;
}
帧循环 i++
场景第 1 帧上 :
i=1;
stop();
场景第 2 帧上:
i++;
a_txt = i;
场景第 3 帧上:
gotoAndPlay(2);
播放按钮上:
on (release) {
();
}
停止按钮上:
on (release) {
();
}
说明:在使用增量运算符时,运算符放在表达式前面与放在后面所执行的操作是不同的,当
用++i 格式时将先执行加 1 操作,然后在使用表达式的值,当使用 i++格式时则首先使用表
达式的值然后执行加 1 操作。
取模运算
场景第 1 帧上:
var i=0;
按钮上:
on (release) {
a_txt = i++;
b_txt=Number(a_txt)%2;
}
说明: :取余运算:首先进行除法运算然后取余数,叫取余运算,取余运算并不在乎其
商是多少,目的只是获
取余数,例如 7/2 余 1,我们使用余数 1 去参加运算,称为数字 7 对数字 2 的余(模),在
flash中取余运算用%
表示, 上式中的余数 1 保存到变量 my_a 中可以写 my_a=7%2,有些编程语言中取余运算
不用%, 而是用 mod
表示,所以有的人就把取余运算叫做取模运算。
6. .2 2 赋值运算符
FLASH 用了大量的赋值运算符,可以使设计的动作脚本更简洁,下面列出了 FLASH 中使用
的赋值运算符。赋值运算符原理
第 1 帧上初始变量:
a=b=c=d=e=100;
按钮 1 上的 AS:
on (release) {
a += 1;
a_txt1 = a;
}
按钮 2 上的 AS:
on (release) {
b -= 1;
a_txt2 = b;
}
按钮 3 上的 AS:
on (release) {
c *= 0.1;
a_txt3 = c;
}
按钮 4 上的 AS:
on (release) {
d /= 0.1;
a_txt4 = d;
}
按钮 5 上的 AS:
on (release) {
e += 5;
e %= 2;
a_txt5 = e;
}
鼠 鼠标 标跟 跟随 随特 特效
( (1 1) )在 在舞台上用静态文本输入文字“鼠标跟随特效”一次分离后,分别把各个
字分别转换为影片剪辑元件。 注意: 转换时注册点要居中。 然后依次分别输入实例名称:
“mc1” 、 “mc2” 、 “mc3” 、 “mc4” 、 “mc5” 、
“mc6” 、 “mc7”
(2) 插入“图层 2”在“图层 2”第 1 帧输入 AS 代码:
_1._x += (_root._xmouse-_1._x)/5
_1._y += (_root._ymouse-_1._y)/5;
_2._x += (_1._x-_2._x)/5;
_2._y += (_1._y-_2._y)/5;
_3._x += (_2._x-_3._x)/5;
_3._y += (_2._y-_3._y)/5;
_4._x += (_3._x-_4._x)/5;
_4._y += (_3._y-_4._y)/5;
_5._x += (_4._x-_5._x)/5;
_5._y += (_4._y-_5._y)/5;
_6._x += (_5._x-_6._x)/5;
_6._y += (_5._y-_6._y)/5;
(3) 图层 2 第 2 帧上的 AS 代码 :
gotoAndPlay(1);
语句讲解:
(1)_root._xmouse—鼠标在场景中的横坐标;_root._ymouse—鼠标在场景中的纵坐标。
(2)计算移动距离的方法:
距离=(终点坐标-实例坐标)/速度
实例坐标+=距离
或者描述为:实例坐标+=(终点坐标-实例坐标)/速度。
它实现的效果是从实例的初始位置开始, 减速地运动到终点。 在上例中只不过终点坐标也
是实例坐标。
实际上就是计算出两实例距离,然后把这个距离除以 5,每次移动距离的五分之一,所以把
这里的 5 叫做速度。
这个公式不仅用于实例的移动, 如果用于影片剪辑的其它属性,如透明度可以实现实例透明
度慢慢变化,如:
mc._alpha+=(20-mc._alpha)/5
可以实现 mc的透明度慢慢从 100 减到 20。
十五、变量(二)
比较运算符
用于比较表达式的值,然后返回一个布尔值(true 或 false)。这些运算符最常用于循环语句
和条件语句中。Flash中的算术运算符及简单的用法如表比较返回值
在舞台上绘制四个动态文本框,变量名分别为: m_txt1、m_txt2、m_txt3、m_txt4。再放入两
个按钮。按钮 1 上的 AS:
on (release) {
m1_txt = 1 == 2;
m2_txt = 1>2;
m3_txt = 1<2;
m4_txt = 1 != 2;
}
按钮 2 上的 AS:
on (release) {
m1_txt=""
m2_txt=""
m3_txt=""
m4_txt = ""
}
条件运算符
:(条件)
格式:表达式式 1? 表达式 2:表达式 3
参数: 表达式 1计算结果为布尔值的表达式, 通常为像 x < 5 这样的比较表达式。 表达式 2、
表达式 3 任何类型的值。
说明:指示 Flash 计算表达式 1,如果表达式 1 的值为 true,则它返回表达式 2 的值;否
则,它返回表达式 3 的值。
条件运算符原理
在舞台上绘制两个输入文本, 一个动态文本。 变量名分别为 “x_txt”、“y_txt”、“z_txt”。
在放入一个“计算”按钮、一个“清空”按钮。运算按钮上的 AS 代码:
on (press) {
x = Number(x_txt);
y = Number(y_txt);
z = (x z_txt = z; } 清空按钮上的 AS 代码 : on (press) { x_txt="" y_txt="" z_txt="" } 说明:影片播放时分别在输入文本中输入不能的数值,点击运算按钮,观察返回值,从而理 解其原理。 一个按钮两种功能 制作一个小球旋转的影片剪辑元件,输入实例名 mc,放入一个按钮,然后输入 AS 代码 : 场景第 1 帧上的 AS 代码 : var i=1 按钮上的 AS 代码 : on (press) { i++%2 == 0 ? _() : _(); } 说明:此例中是用取模来分支的,我们也可要用布尔值来进行分支,例如上例中可以这样写 语句: 第 1 帧上: var k =false; 按钮上: on (press) { k ? _() : _(); k = !k; } 如果要控制几个影片剪辑代码要以这样写: on (press) { i++%2 == 0 ?[ _(),_()]:[_(),_()]; } 逻辑运算符 逻辑运算符对布尔值(true 和 false)进行比较,然后返回第三个布尔值。在表达式中,用 户可以使用逻辑运算符来判断某个条件是否存在。逻辑运算符主要用在 if和 do while动作 中。有关逻辑运算符及其功能如表逻辑运算原理 说明:我们打开素材,播放状态下,点击按钮,观察逻辑运算的返回值,从而理解逻辑运算 原理。 控制小球运动 1.运行 Flash 8,大小默认,帧频为 24fps。 2.在舞台上绘制一个直径为 60 的无笔触放射状填充的小正圆(小球)。 3.选中小球,按 F8 键转化为影片剪辑元件,注册点居中。 4.选中小球,在属性面板里输入实例名: “mc” 5.插入“图层 2” ,把“图层 2”重命名为“AS” 。 6.在“AS”的第 2 帧,第三帧上插入空白关键帧。 在第 1 帧上添加 AS 代码: var i = 20; var j = 10; 第二帧上添加 AS 代码: _._x<=30 || _._x>=520 ? i=-i : 0; _._y<=30 || _._y>=370 ?j=-j : 0; _._x += i; _._y += j; 第 3 帧上的代码: gotoAndPlay(2); 7.大家可以自己加一个背景,放在场影的最下层。 8.播放影片,观看效果。 代码讲解: (1) 第 1 帧上初始的变量值是决定小球的运动方向与运动速度的。 (2) 第 2 帧上用条件运算符来控制小球运动到场影的边缘时就要反向,速度不变。 (3) 第 3 帧上是让播放头在第 2 帧同第 3 帧之间循环。 (4) 此例条件运算式了中,第三个表达式:“0”是不起任何作用的,但语名格式中,不能没 有它。 十六、影片剪辑的属性 通过本课的学习了解影片剪辑的主要属性,学会设置和获取影片剪辑的属性的方法。 知识点: (1)影片剪辑的常用属性 (2)用点语法设置和获取影片剪辑的属性 (3)用 setProperty()和 getProperty()函数动态设置和获取影片剪辑属性 (4)用数组运算符[]动态设置和获取影片剪辑属性 影片剪辑的属性 我们已经知道影片剪辑的一些属性可以通过属性面板,信息面板,变形面板,来设置,在 这一课中我们将深入学习在 AS 语言是怎样描述影片剪辑的属性的、 怎样用程序来设置和获 取影片剪辑的属性。下面列出了影片剪辑常用属性用点语法设置和获取影片剪辑的属性 对于大多数影片剪辑的属性既可以设置,又可以获取,比如坐标、旋转度,透明度等。 这 里我们通过下面的例子来学习用点语法设置和获取影片剪辑的属性。 用点语法设置影片剪辑属性1.命名实例名和变量名 (1)打开素材,进入到花元件中,选中“花 1”影片剪辑元件,在属性面板里输入实例名 称: “mc1” 。在场影中,选中“花”影片剪辑元件,在属性面板里输入实例名称:“mc” 。 (2)在场景中创建一个动态文本,并在属性面板里输入变里名: “txt”. 2.写代码(场景中的按钮从上到下依次叫按纽 1~按钮 6) 按钮 1 上的代码: on (release) { _1._xscale += 10; _1._yscale += 10; _ = "放缩度:"+_1._xscale; } 按钮 2 上的代码: on (release) { _1._xscale-= 10; _1._yscale-= 10; _="放缩度:"+_1._xscale } 按钮 3 上的代码: on (release) { _1._rotation += 2; _ ="旋转度:"+ _1._rotation; } 按纽 4 上的代码: on (release) { _1._rotation-= 2; _ = "旋转度:"+ _1._rotation; } 按纽 5 上的代码: on (release) { _1._alpha -= 5; _ ="透明度:"+ _1._alpha; } 按纽 6 上的代码: on (release) { _1._xscale = 100; _1._yscale = 100; _1._rotation = 0; _1._alpha = 100; _="还原" } 在上例中我们学习了点运算符设置和获取影片剪辑的属性, 但点运算符不能动态的设置影片 剪辑的属性。这一课中我们将学习动态的设置影片剪辑的属性。 setProperty()//设置电影片断在屏幕中的属性。 脚本位置:全属函数|影片剪辑控制|setProperty 语法格式:setProperty (target:Object, property:Object, expression:Object) : Void 功能:当影片播放时更改影片剪辑的属性。 参数: ◆ target:Object — 要设置其属性的影片剪辑的实例名称的路径。 ◆ Property:Object—要设置的属性。 ◆ Expression:Object — 或者是属性的新的字面值,或者是计算结果为属性新值的等式。 点击:全属函数|影片剪辑控制|setProperty后, ◆ 目标—要设置其属性的影片剪辑的实例名称的路径。 ◆ 属性—要设置的属性 ◆ 值—或者是属性的新的字面值,或者是计算结果为属性新值的等式。 getProperty()函数 我们已经知道 setProperty()函数可以设置影片剪辑的属性但它没有返回值 例如:例如在舞台上创建两个影片剪辑,实例名为: “mc1” 、 “mc2”水平中齐。在第 一帧写入代码: mc1._x = 275; trace(mc1._x);//275 setProperty(mc2, _x, 275); trace(setProperty(mc2, _x, 275));//undefined flash给我们提供了动态获取影片剪辑属性的函数 getProperty()。 脚本位置:全属函数|影片剪辑控制|getProperty 语法格式:getProperty(my_mc:Object, property:Object) : Object 功能:返回影片剪辑 my_mc 的指定属性的值。 参数: ◆ my_mc:String — 要检索其属性的影片剪辑的实例名称。 ◆ property — 影片剪辑的一个属性。 返回:Object— 指定属性的值。 点击,全属函数|影片剪辑控制|getProperty后 此对话本框中参数能选项如下所述。 目标—要检索其属性的影片剪辑的实例名称。 属性—指定属性的值。 设置和获取影片剪辑的属性 (1) 在舞台任意绘制一个图形,转化为影片剪辑元件,注册点居中。在属性面板中设置实 例名为“a_mc” (2) 复制一个影片剪辑实例,把复制的这个实例用任意变形工具任意改变它的高和宽。并 在属性面板里设置实例名为“b_mc” 。 (3) 建立一个按钮,选中按钮,打开“动作”面板,写入代码: on (release) { setProperty("b_mc", _width, getProperty("a_mc", _width)); setProperty("b_mc", _height, getProperty("a_mc", _height)); setProperty("b_mc", _x, getProperty("a_mc", _x)+200); setProperty("b_mc", _y, getProperty("a_mc", _y)); } 测试影片,点击按钮后,两个实例完全一样。 在这个实例中是静态地设置和获敢影片剪辑属性的,下面我们来练习动态设置属性。 使用 setProperty()函数批量更改影片剪辑属性 下图是实效果中的一个面画 制作步骤 (1) 新建 flash文档,文档大小:600×400,其它默认。 (2) 在舞台上绘制一个直径为 60 的正圆,转化为影片剪辑元件,注册点居中。 (3) 复制 4 个影片剪辑实例, 在属性面板里分别设置实例名称为 “qiu1” 、“qiu2” 、 “qiu3” 、 “qiu4” 、 “qiu5” 。把 5 个影片剪辑实例拖入到舞台外。 (4) 在舞台上建立两个按钮元件。分别选中按钮,打开动作面板,写入代码: on (release) { i<5 ? i++ : i=1; setProperty("qiu"+i, _x, 100*i); setProperty("qiu"+i, _y, 180); setProperty("qiu"+i, _alpha, 100-(i-1)*20); } on (release) { i<5 ? i++ : i=1; setProperty("qiu"+i, _x, 100*i); setProperty("qiu"+i, _y, 2/3*100*i); setProperty("qiu"+i, _alpha, 100-(i-1)*20); } 在场景第 1帧输入代码: var i=0 测试影片,观看效果。 分析: 在第 1 帧上初始变量值为 i=0,当第一次点击按钮时, i++的值为 1, 第二次点击时 i++ 的值为 2,…… 所以,_alpha 的值 100-(i-1)*20 依次为:100、80、60、40、20。 _x 的值 100*i 依次为:100、200、300、400、500。 纵坐标_y 的算法:场景大小为 600×400,坐标原点(0,0)在左上角,所以对角线的斜率 为:400/600=2/3,对角线方程为:y=2/3x,因为横坐标_x 为:100*i,所以纵坐标_y的值设置 为:100*i*2/3。 在这个实例中,我们用点运算符分别来设置小球的属性还不算太困难,要是有 100 个影片 剪辑实例呢?那你要写多少代码。所以掌握动态设置影片剪辑属性的方法很有必要。 在以后 我们学习到复制命令、条件、循环后会更有体会的。 动态路径 影片剪辑一般可以通过手工创建,通过“属性”面板设定影片剪辑的实例名称,通过实例名 称和路径可以访问不同层次的影片剪辑实例。但有的影片剪辑实例是通过程序创建的,例如 通过复制函数可以复制出若干的新影片剪辑实例, 它们的实例名也是在程序中指定的。要访 问这些复制出来的影片剪辑,最好的方法是用动态路径。 动态路径是利用数组运算符来实现的 。 我们可以使用动态路径来访问"qiu"+i _root["qiu"+i] 也可以使用 this 来指定 this["qiu"+i] 注意:动态路径使用数组运算符 “ [] ” 实现,路径同实例名之间没有点运算符。 说明:使用动态路径可以批量实现路径.假如场景中有影片剪辑实例 mc1,mc2…mc100 假如 用绝对路径要写 100 行程序,用动态路径非常方便,因为这些实例名有一定的规律,开头 的字母都是一个的,都是 mc,后面的数字可以用一个变量 n来表示,因为变量是可以变化 的,表不如下: _root[“mc”+i] 如果有多重路径,如要访问主场景下的 mcA下的 mc1 到 mc100,可以这样来表示: _["mc"+i] 又如要访问"mc"+i 中的变量 txt,可以这样来表示: _root["mc"+i+".txt"] 利用动态路径批量更改影片剪辑的属性。 。 (1) 打开源文件。 (2) 进入 qiu1 的编辑场影中,插入“图层 2”在此图层上建立一个动态文本,在属性面板 里输入变量名 txt。 因为另外四个影片剪辑实例是由 qiu1 复制的,所以每个影片剪辑实例中都有了动态文本。 (3) 把两个按钮上的代码分别改为: on (release) { i<5 ? i++ : i=1; _root["qiu"+i]._x = 100*i; _root["qiu"+i]._y = 180; _root["qiu"+i+".txt"] = "qiu"+i; } on (release) { i <5 ? i++ : i=1; _root["qiu"+i]._alpha = 100-(i-1)*20; _root["qiu"+i]._x = 100*i; _root["qiu"+i]._y = 2/3*100*i; _root["qiu"+i+".txt"] = "qiu"+i; } 测试影片, 说明:动态路径在实际编程中运用非常广泛,它大大提高了编程的效率。有关动态路径更多 应用将在后面的章节里讲解。 十七、再讲循环语句 掌握 if 语句、if-else语句、else if 语句的语法格式及其功能。 一个程序都是由若干个基本结构组成,每个基本结构包含一个或多个语句。 程序有三种基本 结构,顺序结构、选择结构、循环结构。 在实际运用中,往往有一些需要根据条件来判断结果的问题,条件成立是一种结果,条件不 成立又是一种结果。像这样比较复杂的问题就必须用选择结构来解决。 在选择结构程序中,有一个条件,当条件为真时,执行一段代码,否则的话,执行另一段 代码,所以选择结构的程序的特点是只能执行两段代码中的一段。 在这一课中我们将继续学习条件语句。 if 语句 脚本位置: 语句|条件/循环|if 语句 语法格式: if(条件) { //小括号里的条件是一个计算结果为 true 或 false 的表达式。 这里是当条件计算为 true时执行的指令 } 功能:其中,if是表示条件语句的关键词,注意字母是小写,这个 if语句的功能是 if后面 小括号里面的条 件只能有两种结果:真(true)或假(false)。只有当条件为真时才执行大括号中的程序,如 果条件为假, 将跳过大括号中的程序,执行下面的语句。if语句执行过程如图参数:condition:Boolean—计算结果为
版权声明:本文标题:flash动作脚本详解(免费) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1706054313h499909.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论