二十五、播放器控制与网页连接以及动画发布输出
二十六、loadVariables命令
二十七、影片剪辑的深度
二十八、文本框
二十九、超文本标签
在“脚本”编辑窗口的上面,有一排工具图标,在编辑脚本的时候,可以方便适时的使用它们的功能。
在使用“动作”面板的时候,可以随时点击“脚本”编辑窗口左侧的箭头按钮,以隐藏或展开左边的窗口。将左面的窗口隐藏可以使“动作”面板更加简洁,方便脚本的编辑。
好了,动作面板就介绍这些,有个印象,不要求记住,工具栏上每个工具的作用和功能将在以后的课程中边用边熟悉。
如何编写flash中的脚本
播放
on(release){_root.mc.play();}如果要在按钮身上写脚本的话,必须使用on(事件){//脚本程序}的格式来写!上面的脚本作用就是:当你在这个按钮上按一下鼠标(release事件)的时候,就会执行下面的_root.mc.play();程序,它的意思是让舞台上的mc开始播放!6、同理:咱们选中舞台上的暂停按钮,在它上面输入:on(release){_root.mc.stop()}然后依次在快退上输入:on(release){_root.mc.prevFrame();//prevFrame表示回到动画的上一桢}在快进的按钮上输入:on(release){_root.mc.nextFrame();}在停止的按钮上输入:on(release){_root.mc.gotoAndStop(1);//跳到mc影片的第一桢,并停止播放!}
在flash中的交互功能一般是由按钮来完成的。掌握按钮的编写规则也是一个闪客的基本技
能。
本身上面。只不过这两种编写规则都要遵循一定的规矩,这是后话。
现在咱们来做一个例子,做一个按钮,这个按钮要实现的功能就是打开一个指定的网页。
(这个例子非常基础,用这个例子来讲解按钮AS两种编写方法。)
第一种:把脚本写在按钮本身。
一、在舞台上绘制一个矩形,选中矩形并按F8,将这个矩形转换成按钮元件。
二、编写动作脚本:
选中按钮,按F9,打开动作面板,在专家模式下输入以下脚本:
on(release){
}
现在这个按钮就实现了一个打开网页的功能。通过例子你应该注意到,按钮的AS书写规则
就是:
on(事件){
//要执行的脚本程序,刚才的例子是用getURL来打开一个网页。你也可以使用脚本程序来
执行其他功能,例如跳转到某一个桢,或载入外部一个动画文件。
大可以看到,其实就一个on语句,这个on语句就是按钮的AS编写规则了。需要注意
的是on里面的事件,这个事件你可以理解为是鼠标或键盘的动作。刚才的例子我们使用的
事件是release(按一下鼠标)我现在把常用的按钮事件列出来:
事件名字说明
Press事件发生于鼠标在按钮上方,并按下鼠标
Release发生在按钮上方按下鼠标,接着松开鼠标时。也就是“按一下”鼠标
Releaseoutside发生于在按钮上方按下鼠标,接着把光标移动到按钮之外,然后松开
鼠标
Rollover当鼠标滑入按钮时
Rollout当鼠标滑出按钮时
Dragover发生于按着鼠标不放,光标滑入按钮
Dragout发生于按着鼠标不放,光标滑出按钮
Keypress发生于用户按下特定的键盘按键时
下面来看看第二种按钮AS的编写方法。
一、选中按钮,在下面的属性面板中为按钮起一个名字,这里我起了一个bt
bt.onrelease=function(){
};
这种编写AS的方法要遵循的规则就是下面的公式而已:
按钮实例的名字.事件名称=function(){
//要执行的脚本程序。
大家只要记住这个公式就可以套用了。
按钮的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(事件){
//需要执行的脚本程序
这个可以看成是公式,你记住就行了,是写在影片剪辑身上的。括号里的“事件”其实是
个触发器,当事件发生时,执行该事件后面花括号中的语句。,具体有哪些事件,我把它们
都列出来。
片剪辑事件关联的动作之前,不向受影响的帧附加任何动作。
-enterFrame以影片帧频不断地触发此动作。
-mouseMove每次移动鼠标时启动此动作。_xmouse和_ymouse属性用于确定当前鼠
标位置。
-mouseDown当按下鼠标左键时启动此动作。
-mouseUp当释放鼠标左键时启动此动作。
-keyDown当按下某个键时启动此动作。使用Key.getCode方法获取最近按下的键的
有关信息。
-keyUp当释放某个键时启动此动作。使用Key.getCode方法获取最近按下的键的有关
信息。
-data当在loadVariables或loadMovie动作中接收数据时启动此动作。当与
loadVariables动作一起指定时,data事件只发生一次,即加载最后一个变量时。当与
loadMovie动作一起指定时,获取数据的每一部分时,data事件都重复发生。
了解了事件之后,你可以自己试着修改一下脚本,如果让你们点一下鼠标,舞台上的圆
就移动一下,该怎么做呢?
的话,应该怎么写。
首先你把刚才的脚本去掉。然后需要为这个影片剪辑实例起一个名字,比如起名为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
abc.text="爱国者安全网"
按下ctrl+回车就可进行测试了。从这个简单的例子可以知道,如果要用文本实
例名字来进行赋值的话,必须使用以下格式:动态文本实例的名字.text=”需要
赋值的内容”
2、使用变量来赋值
(1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个变量名
3800hk。
3800hk="欢迎大家来到爱国者安全网学习!"
不难看出,使用变量赋值更为简单实用!赋值格式为:变量名=“赋值的内容”
以上两种赋值方法如果内容过多需要换行的时候,需要使用行用回车符(“\r”
即ASCII
13)分隔!
三、如何载入外部txt文本里的内容
当内容过多的时候,使用上面的方法并不是太好,我们可以使用下面的方法,从
外部获取文本资料内容!而外部的资料内容就放在一个普通的txt(记事本)文
件中。
具体操作步骤如下:
1、创建一个动态文本实例,并为这个动态文本实例起一个变量名hk
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=newLoadVars();//创建一个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看看。
this.stopDrag();//同样道理,当鼠标释放(release)之后,将停止拖拽动作。
3、好了,现在让我们按Ctrl+回车来测试一下吧,你将会看到舞台上的圆
被你的鼠标拖动的效果。
4、OK,通过这个例子我们可以简单的应用拖拽动作了。现在需要把这个
例子继续完成,还记得上面命令讲解中的左,上,右,下四个控制拖动范围的参
数吗?现在来制作具有约束拖动范围的效果。
5、现在在舞台上绘制一个200*100大小的矩形,注意只要边框不要填
充。
6、如果我们希望在拖动的时候这个圆只能在矩形内拖动的话,就要先设置
这个矩形的坐标,并记下矩形四个顶点的坐标(这点很重要!)。OK,比如,现
在此例子中的矩形的四个顶点分别如上图所示。那我们要取的四个参数就应该
是:左=50,上=100,右=250,下=200现在打开动作面板,修
改刚才的脚本如下:
this.startDrag(true,50,100,250,200);//这里我们就使用刚才确定好的4个参数。
4个点的参数就对拖动对象实现了一个矩形区域的移动约束!
this.stopDrag();
7、好了,按Ctrl+回车去测试吧!
好了,关于拖拽的讲解先到这里,下面我们来学习如何结合着拖拽动作来检
测对象之间的碰撞!
三、碰撞命令的讲解
命令格式:目标影片剪辑的实例.hihkest(被拖拽的实例)这个是比较
简单的检测碰撞命令
目标影片剪辑的实例.hihkest(被拖拽实例的X轴坐标,被拖
拽实例的Y轴坐标,对象的矩形区域范围还是对象本身范围)这个是比较复
杂点的检测碰撞命令
命令解释:以上两个命令都是用来检测碰撞的,可以根据需要选择不同的
命令。重点解释一下对象的矩形区域范围和对象本身范围(上面的命令中,false
表示对象的矩形区域范围,true表示对象本身的范围)
四、碰撞命令与拖拽命令的结合使用
(一)、下面通过简单的例子来学习碰撞命令(我们先来学习如何检测是否
碰到对象的矩形区域范围)
1、新建一个flash文档,在舞台上绘制一个圆形。选中圆形并按F8将它
转换为影片剪辑,起名:圆。这样就在舞台上创建了一个圆的实例。
2、选中此实例,为它起一个名字,此例起名为:yuan
3、选择文字工具,并选择文字类型为“动态文本”,在圆的实例下面拖绘出一个
动态文本框。并起一个变量名为:hk
_root.onEnterFrame=function(){
(onEnterFrame)。
if(_root.yuan.hitTest(_root._xmouse,_root._ymouse,false)){
//根据上面命令的讲解,这个语句就是检测碰撞了。如果鼠标碰到舞台上
yuan这个实例的矩形区域范围的话,就执行下面的脚本。
hk="接触矩形区域范围";
//动态文本框就显示出“接触矩形区域范围”
}else{
hk="没有接触到矩形区域范围";
//如果鼠标没有碰到舞台上yuan这个实例的矩形区域范围的话,就显示
没有接触到矩形区域范围。
现在可以按Ctrl+回车去测试我们的成果
(二)、拖拽碰撞检测
现在再来一个例子讲解拖拽碰撞检测,想偷懒的话可以通过修改上面例子的
代码来学习。
1、现在稍微修改一下上面的例子,以便让我们学习拖拽碰撞检测,在上面
例子的舞台上绘制一个矩形,并把这个矩形转换成电影剪辑,起名为:矩形。
这样就在舞台上又创建了一个矩形的实例,现在为这个矩形实例起一个名为:
juxing。
2、选中这个矩形实例,打开动作面板,输入可以拖拽这个实例的脚本。如下:
this.startDrag(true);
这个脚本就是为了能拖动这个矩形实例。具体解释请回顾第一个拖动对象例
子的脚本说明。
看到上个例子的碰撞检测脚本,把它修改为如下脚本:
if(_root.yuan.hitTest(_root.juxing)){
hk="碰到了";
hk="没有碰到";
这个脚本和上次的碰撞检测脚本类似,只不过不需要再书写X轴和Y轴,也
不用写是否碰到矩形区域范围。简单吧
现在又到了测试阶段了,去观看你的成果
间轴从第一帧不停的播放到最后一帧,然后始重复播放或者干脆停止。为了能更
好的控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要
使用流程控制和循环控制语句了!下面通过几个简单的小例子来学习流程与循环
控制语句。
一、流程控制语句
所谓流程控制,无非就是我们想控制动画程序的执行顺序而已。我们可以让
flash根据一些特定的条件,来决定要执行哪个程序。这样就好象给了程序一些
判断的机制。
if...else控制语句
根据英文的意思,大家可以简单的理解上面的控制语句:如果...就...否
则...就...下面来看看这个流程控制语句的书写格式。
if(条件){
//条件成立的话,就执行这里的程序。
//条件不成立的话就执行这里的程序。
下面重点说一下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个象素
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次。)
gotoAndPlay(1);
让flash播放到第6帧的时候返回第1帧再来执行for循环语句。
5、测试效果吧,你会看到舞台上会循环4次复制出4个圆。
希望大家能通过这两个简单的例子掌握流程控制语句和循环控制语句
在使用flash的过程中,难免会进行绘图的操作。除了用工具面板上的工具绘制图形之外,
我们也可以使用ActionScript来绘制图形。
如何绘制线段及命令解释
lineStyle(粗细,颜色,透明度)//设置绘制图形的线条粗细、颜色和透明度
Moveto(X坐标,Y坐标)//设置绘图线条的起点坐标
lineto(X坐标,Y坐标)//设置线条的结束坐标
现在就用刚才的三个命令在舞台上绘制出来一个300*100大小的矩形。
步骤:
1、新建立一个flash文档。
2、既然要绘制一个300*100大小的矩形,我们就要先确定矩形4个顶点的坐标,
然后就可以使用lineto命令进行编写了。
们就可以来编写脚本命令了,请输入以下脚本:
_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
functiondraw(){//自己定义一个函数,这个函数起名为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实例,打开动作面板,输入以下脚本:
//点击此实例,开始拖动
//释放鼠标,停止拖动
onClipEvent(mouseMove){//当鼠标移动,也就是这个b实例移动的时候,就执行里面的程
序。
_root.draw();//执行舞台上定义过的draw()函数,开始在a与b之间绘制线条。
updateAfterEvent();//强制更新画面,是整个动画更加流畅。
按Ctrl+回车测试动画效果。
二、颜色命令讲解
setRGB()用来设置实例的颜色值,注意,这个值用16进制表示,例如0x000000
(黑色)
getRBG()获取实例的颜色值
下面用一个相对简单的例子来说明颜色命令的使用以及如何填充颜色
要想使用颜色命令,我们必须先构建一个Color对象。方法就是自定义名字=new
Color("要改变颜色的对象"),构建完color对象之后,我们就能使用setRGB或getRGB来设
置或获取颜色了。
1、新建立一flash文档,背景大小为550*400
辑的实例。所用到的命令为:
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=newColor("hk");//构建一个名字叫hk_color的Color对象。
yanse="0x"+random(100)+random(100)+random(100);//用一个变量yanse来获取一个数值,
这个数值就是颜色值
hk_color.setRGB(yanse);//设置矩形的颜色。
3、按Ctrl+回车来测试你的影片吧~会看到矩形会随着鼠标的移动而不断进行颜色变化。
一个好的flash作品,缺少了声音,就如同人不会讲话一样。而flash
外,我们还可以使用AS来更加准确的控制声音!
一、FLASH中如何创建声音控件
如果想控制动画中的声音,我们可以使用flash中的sound对象,
通过sound命令创建一个新的sound对象。之后再用attachSound命
令连接到库里的声音,就可以用来控制动画中的声音了。
常用命令讲解:
newSound()此命令用来创建一个新的sound对象,有了
sound对象我们才能用AS来控制声音。
attachSound("库中的声音")此命令可以使我们创建的声
音对象连接到库里的声音,以便进行控制。
start([从第几秒开始播放,循环次数])此命令可以是
声音开始播放,里面的两个参数是可选的。
stop()停止声音的播放。
setVolume(音量级别)此命令可以控制声音的音量高低,
音量级别只能是从0-100之间的数字。
现在我们也应该用AS先做一个简单的小例子了。
二、创建一个简单的声音播放动画,可以实现简单的开始与停止
播放声音。
1、新建一个flash文档,按Ctrl+R(文件\导入)导入一个声音
文件,声音文件可以是MP3或WAV格式的。声音文件导入之后,在
舞台上是看不见的,必须打开库才能看到我们导入的声音。
2、选中库中的声音文件,单击鼠标右键,在弹出的菜单中选择“链
接...”将会弹出一个链接的对话框,请勾选“为动作脚本导出”和“在第
一帧导出”选项,并输入一个标识符:mysound(名字可任意写),
单击确定。
在我们要创建一个新的声音对象,并且连接到库里的声音。用来控制
声音。输入以下脚本:
music=newSound();//创建一个名字叫music的声音对象。
music.attachSound("mysound");//将这个声音对象与库里的标识符为
“mysound”的声音连接。
4、现在需要在舞台上放置两个按钮分别控制声音的播放与停止。
5、此时,舞台上将有播放和停止两个按钮,选中Play按钮,打开
动作面板,输入以下脚本:
music.start();
}//播放声音
选中Stop按钮,输入以下脚本:
music.stop();
}//停止播放声音
6、OK,一个简单的控制声音播放与停止的例子就完成了,快
按Ctrl+回车来测试吧。
三、创建一个稍微复杂的例子,用来滑动按钮来控制声音的音量。
1、新建一个flash文档,并按Ctrl+R导入一个声音文件。
2、参照上个例子,打开库,并把导入的声音文件设置一个链界
标识符。这里设置标识符为“mysound”。
对象,连接库中声音,并播放这个声音。输入脚本如下:
music=newSound();
music.attachSound("mysound");
music.start(1,10);//播放声音,从第一秒开始播放,并循环10次
4、现在需要一个按钮做为滑动按钮,用来控制声音的音量!按
钮可以自己制作或使用公用库中的按钮,此例中我使用公用库中的按
钮。请在舞台适当位置放置一个按钮实例。
5、选中按钮,打开动作面板输入以下脚本:
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;
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对象播放、停止
声音,以及控制声音的方法。
们必须先用Date对象的构造函数创建一个Date对象的实例。然后,就可以用创建的这个
实例来进行操作!命令格式如下:
实例名=newDate()
二、显示日期及做一个走动的表
下面我们通过一个例子来介绍Date对象的各种命令使用方法。
1、新建立一flash文档,将层1改名为:文字显示,并在舞台下方绘制出一个动态文
本框,起一个变量名:mytime
2、新建立一个层,并把这个新建立的层起名为:表盘,然后使用绘图工具在舞台上绘制出
一个不带分针、时针和秒针的表盘。
3、现在来绘制指针。按Ctrl+F8新建立一个影片剪辑,起名为:指针,选择绘图工具,
在里面垂直绘制出一条细线做为指针。注意:将线条的下方与影片剪辑的中心点对齐
4、返回主舞台,新建一个层,改名为:指针—秒将刚才制作的指针拖放在表盘的中
间,注意要把指针的中心点与表盘的中心点对齐。之后,为这个指针实例起一个名字为:sec
我们先做秒针。
5、同理,再新建一个层,并起名字为:指针—分将库里的“指针”元件再拖放出来,并改
变这个实例的长度和颜色,让它做为分针。实例名起为:min
6、现在按照上面的方法来制作时针,新建一个层,改名为:指针-时将指针元件拖放
在舞台中,与表盘中心对齐,并把这个实例起名为:hour
7、呵呵,现在咱们开始编写程序了,为了观察方便,我们再新建一个层,改名为AS,选
中AS层的第一桢,打开动作面板,开始编写脚本,首先,我们要让舞台上的动态文本框显
_root.onEnterFrame=function(){//需要让影片不停执行下面脚本。
mydate=newDate();//首先构建一个名字叫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;//让舞台上变量名为
sec._rotation=6*ms;//利用flash中对象旋转命令来实现指针的走动。_rotation旋转一周是360
度,所以,秒针每走一下,就等于走了6度,所以用一个算法来获取每秒的度数6*ms
min._rotation=6*mm;//同理,让分针也是根据获取的分钟数值乘以6来进行度的旋转。
hour._rotation=mou*30+mm/60*30;//小时的走动,算法稍微复杂一点,因为时针走一圈是12
个大格。具体上面的算法有兴趣的朋友可以自己研究一下。
点(.)语法、路径
通过本节的学习要掌握(.);能正确地输入影片剪辑的实例名称;理解相对路径和绝对路径
的概念,理解分层结构中的包含关系和并列关系,
点(.)语法
辑、变量、数对象的目标路径。点语法表达式是以对象或影片剪辑的名称开始,后跟一个点,
最后以要指定的元素结束。
例如:(1)张三的身高。这句话用AS语言表示为:张三.身高
(2)安徽合肥中澳学院。这句话用AS语言表示为:安徽.合肥.中澳学院
元件命名
在上面的例子中,“张三”是人名,“身高”是他的属性,那么,在FLASH中怎么样
用AS语言来表示一个影片剪辑的高度呢?
类似地我们要给影片剪辑取一个名称,如果在主场景中有放入一个影片剪辑,那么这个影片
剪辑相对于场景是场景的一个实例,在场景中选中影片剪辑就可以在属性面板中键入实例
名。
好了,小球有了实例名称了,我们现在来表示它的高度(_height)。
注意:在命名实例名时,最好意义明确,可以用英文、汉语拼音和中文,并且不同类型的元
件加不同的前后缀,在实际编程中我们往往不太注意这些,规范的命名不仅容易阅读,还能
为其增加一些特定的后缀触发代码提示。
命名影片剪辑实例;加_mc后缀,例如my_mc。
命名按钮时,应使用_btn后缀。例如my_btn.。
命名文本时,应使用_txt后缀。例如my_txt。
例如上例中小球的实例名如果加上后缀_mc就会出现影片剪辑属性的代码提示
安徽.合肥.中澳学院
小球._height
张三.身高
路径
“路径”指“道路”,“路线”其含义是:如何到达目的地,这个目的地叫做路径的目标,
在flash中引用了目标路径的概念,目标路径:是SWF文件中影片剪辑实例名称,变量和
对象的分层结构地址。
目标:指的是将要被动作脚本控制的对象,有影片剪辑实例,变量等。
路径:指如何到达目标,即我们如何从控制点到达被控制点。
数组等,它们的位置关系有两种,一是父子关系;二是并列关系。
所谓父子关系指的是包含与被包含的关系,例如:把影片剪辑mc1拖放到影片剪辑mc
中,则称mc1是mc的子级,反过来mc称作mc1的父级。它们的层次结构用点语法表
示,圆点前面的对象包含着圆点后面的对象,如_root.mc.mc1即_root包含了mc,而mc
包含了mc1。
所谓并列关系指的是对等的关系,它们之间没有包含与被包含的关系,如:_root.mc_a和
_root.mc_b。
径。
绝对路径
标路径简单易懂但重用性差。
在编写绝对目标路径时,首先写上_root,一方面表示这个路径是一个绝对路径,另一方面
相对路径
使用一次就会在同一层的影片剪辑的层次中上升一级,有多少元件就写多少_parent,若向
下看只需要用点运算符,中间有多少元件就写多少实例名。
例如:
this._parent
this._parent._parent
this.mc.mc1
编写目标路径的方法
在Flash8中可以用多种方法编与目标路径,直接手工输路径,或者使用“插入目标路径”
对话框。我们只需要为影片剪辑和变量等正确的输入名称,使用动作脚本面板的“插入目
标路径”按钮,找到你要控制的对象即可。
其具体步骤如下:
(2)在“动作”工具箱(面板左侧)中选择需要目标路径的动作或方法。
(3)单击动作脚本中想插入目标路径的参数框或位置。
(4)单击动作脚本编辑窗格上面的“插入目标路径”按钮,打开“插入目标路径”对话框。
(6)在“插入目标路径”显示列表中选择一个影片剪辑,单击“确定”。
观察目标路径
由上图在以看出影片剪辑之间的分层结构:mc中包含了两个子级mcA、mcB;而mcA中
又包含了三个子级mc1、mc2、mc3。
按F9打开动作面板,点击“插入目标路径”按钮后,在弹出的“插入目标路径”对话框
中我们可以清楚地看到分层结构。
当我们选中一个目标后,再选择“相对”或“绝对”按钮后,在“插入目标路径”对话框的
最上面一栏里就会显示出路径,例如:控制点为mcA,控制目标为mc1,路径为:
相对路径:this.mc1绝对路径:_root.mc.mcA.mc1
通过本课的学习,掌握在按钮上添加代码的方法;理解on命令的函数功能;
掌握时间轴控制命令的功能,语法格式,掌握在帧上添加命令基本操作,能使
on事件处理函数
事件是指软件或硬件发生的事情,它需MacromediaFlash的应用程序对事件有
一定的响应。硬件发生的事件如按下鼠标、单击鼠标、拖动鼠标等。软件发生
的事件如影片剪辑刚刚被载入场景、影片剪辑被卸载等。为了使应用程序对事
件做出反应,必须使用事件处理函数。
下面我们就来学习on事件外理函数。双击代码选择区中的“全属函数”|“影
片剪辑控制”|“on”命令后,弹出选项
On事件动作使用较多,它一般直接作用于按钮,也可以作用于影片剪辑实例。
其调用格式如下:理解on事件中的参数意义
在创建一个动态文本,在属性面板里输入变量名:txt.再创建一个按钮实例,选中按
钮,
打开动作脚本面板输入代码:
txt="发生了鼠标按下(press)事件";
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语句的基础,它们的主要任务是控制帧的停止、播放、跳转等。只
这一课中我们将分别介绍它们的功能及使用方法。
play()与stop()
play和stop在Flash中用于控制动画的播放和停止,play命令使播放头从它当
前位置向前移动。stop停止当前正在播放的SWF文件。此动作最通常的用法
是用按钮控制影片剪辑。是Flash中控制动画最基本的命令。
使用方法如下:路径.play()路径.stop()
帧命令
播放,但如果是图形元件中做的动画,在场景中必须有与元件时轴同样的帧频
数才能正常播放。
下面我们做一个实例,通过该例,我们来掌握在帧上添加命令的方法,初步了解
我们播放动画时,可以看到每个动画都是动的,现在我们来进行控制。
(1)打开素材,分别选中场景中的小花,和树叶,在属性面板里输入实例名
“花”“叶”。
(2)进入名称为“叶引导线”的影片剪辑元件的编辑区中,点击“AS层”的
第1帧打开动作面板。输入命令:
在第50帧插入空白关键帧,选中此帧,打开动作面板,输入命令:
在主场景“AS层”的第1帧,添加命令:
在主场景“AS层”的第170帧添加命令:
测试影片看看效果。
间轴的控制,对初学的朋友,最简单的方法是:正解输入实例名后,通过“插
入目标对话框,找到你的控制目标,这时软件会自动给你编写好路径,你只需在
路径后面加上一个小点“.”然后加上stop()或play()命令。帧命令是播放头来
触发的,播放头经过你的命令帧,这帧上的命令就被执行了。
按钮的交互控制
我们利用此动画练习在不同的控制点上来控制影片。现在我们任意选两个控
制点,如果选择mcA中放一个停按钮,mc1中放一个播放按钮,用这两个按
钮来控制所有影片剪辑。
停止按钮上的代码:
_root.mc.stop();
_root.mc.mcA.stop();
_root.mc.mcB.stop();
_root.mc.mcA.mc1.stop();
_root.mc.mcA.mc2.stop();
_root.mc.mcA.mc3.stop();
播放按钮上的代码:
_root.mc.play();
_root.mc.mcA.play();
_root.mc.mcB.play();
_root.mc.mcA.mc1.play();
_root.mc.mcA.mc2.play();
_root.mc.mcA.mc3.play();
说明:上例中使用的都是“绝对”路径,如果你对路径的概念掌较好,可以选
择性的
使用“相对”路径或“绝对”路径。
本课涉及的语法及规范
圆括号“()”:圆括号在动作脚本中作用非常大,在定义函数时在将参
数全部放到圆括号内;在调用函数时要将传递给函数的所有参数包含在小括号
里;在设置表达式优先级或增强动作语名的易读性时都需要使用到圆括号。例如:
本课学的on函数用来定义鼠标或键盘响应事件,其中选择的鼠标事件就是参
数。有时也可以没有参数例如:函数play()。
分号“;”:动作脚本中的分号是用来作为语句结束的标记,在FlashAS脚
本中,任何一条语句都是以“;”号结束的。虽然有时省略了“;”号,Flash也
可以成功的编译这个脚本,但这是不规范的。
花括号“{}”,动作脚本中的一组语句可以被一对花括号“{……}”包
括起来,成为一个语名组。在由多个动作状态组成的语句组中,使用花括号可
以有效地来区分各命令的层级和从属关系。
能进行一些简单的交互控制。
的播放顺序,从而实现各种特效,跳转命令有两个它们是gotoAndPlay和
gotoAndStop,应用格式为:
scene:String[可选]—一个字符串,指定播放头要转到其中的场景的名称。
frame:Object—表示播放头转到的帧编号的数字,或者表示播放头转到的帧标
签的字符串。
gotoAndPlay|(“scene”,frame)的函数意义是:将播放头转到场景中指定的帧并
从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。
gotoAndPlay
命令后,在此可以选择此命令的参数。
该参数共有两个提示,其含义如下所述。
“gotoAndPlay(帧);”:按照该提示,可以在括号内输入需要跳转的帧数,例如,
当播放到当前帧的时候,跳转到第20帧,则应当在当前帧上添加代码
gotoAndPlay(20);。
“gotoAndPlay(“场景”,帧)”:按照该指示可以在括号内指定播放某一场景
中的某一帧。将播放头
转到场景中指定的帧并停止播放。例如:当播放到当前帧的时候自动跳转至
scene_2(场景2)的第20帧,则在当前帧上添加代码:gotoAndPlay("场景_2",25);
如果未指定场景,播放头将转到当前场景中的帧。
注意:
在进行跳转时应该尽力避开场景和帧编号,而使用帧标签,帧标签可以穿越所
有场景,可以减少错误的发生,还可以使flash运行速度增快。还便于修改。
gotoAndPlay([scene:String],frame:Object):Void
gotoAndStop([scene:String],frame:Object):Void
gotoAndPlay("场景",帧);
gotoAndStop("场景",帧)
_root.gotoAndStop("f");
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上的代码:
gotoAndStop("场景2",1);
按钮2上的代码:
gotoAndStop(3);
按钮3上的代码:
gotoAndStop("s4_f1");
分别进入每个场景中,选种按钮添加代码:
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%。创建形状动画。并在最后一帧输入停止命令。
59.场景组装
(1)把场景“图层1”更名为“背景”,从库里提进“背景”图形元件居中对
齐。
(2)插入“图层2”更名为“滚动菜单”。从库里提进“滚动菜单”影片剪辑
元件,相对于场景,左对齐、底对齐。并在属性面板里输入实例名“菜单”。
(3)插入“图层3”更名为“图片”,从库时提进“图片”影片剪辑元件,放
在对应背的左上角的矩形框里。并在属性面板里输入实例名“图片”。
(4)插入“图层3”更名为“蒙板”,从库时提进“蒙板”影片剪辑元件,放
在“图片”上,并在属性面板里输入实例名“蒙板”。
(7)插入“图层7”,更名为“AS”
场景组装完毕
添加代码
(1)选中AS层的第1帧,打字开动作面板,在动作面板中输入代码:
onEnterFrame=function(){
_root.a.text=_root.mc._currentframe;
(2)进入“按钮组”影片剪辑元件的编辑区,用选择工具选中“按钮1”(最
左边的一个),打开动作面板,在动作面板中输入代码:
_root.菜单.stop();
on(release,rollOut){
_root.菜单.play();
_root.图片.gotoAndStop(1);
_root.蒙板.play();
(3)把“按钮1”上的语句复制粘贴到其它按钮上,然后把语名中的第8行
_root.mc.gotoAndStop(1);
改为“图片”元件中放图片的对应放图片的那一帧,例如按钮5上的语句应改
为:
_root.图片.gotoAndStop(5)
实例制作完毕,大家测试景片,观看效果。
通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态
文本显示变量、输入文本输入变量,会使用调试命令trace。了解Flash中的数据类型.
认识变量
在日常生活中人们处理信息的时候,必需首先把信息保存起来,比如你将一群羊分成两部分,
你必须把它们赶到不同的领地,这些领地暂时保存着羊群,即便你是凭空想象,你想象时的信
息也要暂时保存在脑细胞中,也就说要处理任何信息首先就得保存信息,动作脚本也不例外,
动作脚本使用变量保存信息,所以说变量是保存数据的一种容器,容器本身始终不变,但内容
可以更改,这个比喻是非常形象的,现在有一个容器名称为a,放进一些盐它就是盐罐子,放进
一些醋它就是醋罐子了。在flash中,通过动作脚本可以建立很多“容器”来存放flash中
的信息,比如影片剪辑的透明度、坐标等,也可以存放人的名字、年龄等。为了区别不同的
“容器”必须为每个“容器”取一个自己的名字,即变量名。怎么样来定义“容器”呢?
下面来定义一个容器,它的名字是myAge,用来存放年龄。定义如下:
varmyAge;
var是用来定义变量的关键字。
MyAge便是变量名。
那么这个变量怎么存放年龄呢?在定义变此时可以给定一个值,即变量值,如下所示:
varmyAge=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.ss//不能使用标点符号
ab//不能有空格
如:
var年龄=20;
其中年龄就是变量名。
注意:在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀,在实际编程中
我们往往不太注意这些,规范的命名变量使其他人更容易阅读,命名变量时通过为其增加
一些特殊的后缀触发代码提示。下表中为支持代码提示所需后缀trace()函数
在编写脚作脚本中,我们会大量用到trace()命令。trace()实际算是一个调试命令,它的输出
都会在“输出面板”显示出来。而真正发布作品的时候trace()却不再输出。是最方便的调
试命令,trace()命令非常简单:
应用格式:
trace(expression:Object)
参数:expression要显示的变量或者表达式。
下面我们使用trace函数输出变量值
在主场景第1帧打开动作面板,输入下列代码:
vara=5
varb="欢迎大家来到爱国者安全网学习AS"
varc=(3+5)
trace(a);
trace(b)
trace(c)
变量赋值
使用变量保存信息就叫做给变量赋值。在Flash中给变量赋值常用的方法有:
vara=5;//把常量5赋值给变量a。
trace(a);//输出面板输出5
set(“a”,5);//用set()方法为变量赋值为5。
trace(a);//5
this["a"+1]=0
trace(a1);//0
变量的范围是指变量在其中已知并且引用区域。在动作脚本中有3种类型的变量范围:
本地变量
期。本地变量也可防止出现名称冲突,在定义本地变量时可以为其指定数据类型,这有助于
防止将类型错误的数据赋给现有变量
例如:如果将代码“varx=10;”放置在第20帧上,则附加到第20帧之前的任何帧上的动
作脚本都无法访问变量
全局变量
的变量,请在变量名称前使用_global标识符,并且不使用var语法。
例如
们的区别
Vara=5
_global.b=3
在程序中使用变量
1.必须在动作脚本首先给变量赋值,然后才能在表达式中使用它。在flash中可以使用变
量动态的设置其它动作中的不同参数。
k=random(30)+50;
setProperty("mc",_xscale,k);
setProperty("mc",_yscale,k);
2.如果使用未赋初值过的变量该变量的值将是NaN或undefined。并且动件脚本可能产生
意外的结
果。
vark=x*x;
trace(k);//NaN
varx=6;
在下面的示例中申明变量的语句必顺排在第一行,这样k就可以替换为一个值;
trace(k);//36
用动态文本显示变量值
(1)启动flash,新建一个文档,文档属性默认。
(2)单击文本工具,打开“属性”面板,在其文档类型选项中选择“动态文本”
(3)在舞台中单击建立一个动态文本,在“属性”面板把变量名设为myAge,
选择图层1的第1帧,打开动作面板,输入以下代码:
varmyAge=20
测式影片,在动态文本中可以看到刚才定义的变量值。
用输入文本输入变量值
(1)在场景“图层1”的第一帧,在舞台上建立一个动态文本和输入文本,在属性面板里
为动态文本输入实例名“输入”,为输入文本输入实例名“输出”。
(2)制作一个“提交”按钮和“清空”按钮。然后为按钮添加代码
提交按钮上的代码:
输出=输入;
清空按钮上的代码:
var输入="";
var输出="";
(3)插入“图层2”,在图层2的第1帧,添加代码:
输入=""
测试影片,观看效果。
圆柱表面积计算公式
在输入文本中输入半径和高的值后,点击计算按钮,对应的面积值就会显示在动态文本中.
1)在舞台上建立两个输入文本,分别在属性面板里输入变量名“r”和“h”。再建立一个
输入文本,在属性面板里输入变量名“s”,自己安排好文本的位置。
(2)制作一个“计算”按钮和“清空”按钮,拖入舞台,放到适当位置。
(3)添加AS代码:
计算按钮上的代码为:
s=2*Math.PI*(r*r)+2*Math.PI*r*h;
清空按钮上的代码为:
r="";
h="";
s="";
代码解释:在表达式2*Math.PI*(r*r)+2*Math.PI*r*h中,Math.PI代表圆周率,在计算精确
度不高时,通常是取它的近似值为3.14。而2*Math.PI*(r*r)表示两底面的面积和;
2*Math.PI*r*h表示侧面积。
数据类型
我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输
入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序
都有一个共同特点;他们都需要处理数据.flash中根据数据的处理方法的不同,对数据进行了
分类,他们是;数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义和空值。
计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所
以我们常说"变量是保存信息的容器",为了区别分不同类型的变量,就有了数据类型,变量有
多种数据类型,数据类型描述变量或动作脚本元素可以包含的信息种类,下面讲解常见的数据
类型.函数的值是由变量决定的,那么什么来决定变量呢?那是数据,下面我们就说说AS
中使用到的数据类型。AS中的数据有两大类,一类称之为原始类型(也叫初始类),另
一类叫做参考类型(也叫引用类)。
原始类型数据分为字符串、数值和逻辑型三种,它们都有常量值,能够为其所代表的元素
赋一个实际值。
参考类型数据包括影片剪辑和对象两种,它们有一个可变的值,包含了对元素实际值的引用。
此外还有两个特殊类型的数据:空值和未定义值。
字符串型(string):字符串是诸如文字、字母、数字和标点符号等字符的序列。在动作脚
本语句中输入字符串的方式是将其放在单引号或双引号之间,字符串被当作字符,而不是变
量进行处理。例如“学习Flash”“abcd”的等。还可以使用”+”等运算符对字符串进行操
作。
trace("欢迎大家");
trace('来爱国者安全网学习');
trace("欢迎大家"+'来爱国者安全网学习');
数值型((Number)):您可以使用加(+)、减(-)、乘(*)、除(/)、求模(%)、递增(++)和递减(--)
等算术运算符来处理数字,也可使用内置的Math和Number类的方法来处理数字。下面
的示例使用sqrt()(平方根)返回数值100的平方根10。
trace(Math.sqrt(100));//返回数值100的平方根10
布尔型(boolean):只有“真(true)”“假(false)”两种值的数据。布尔值是true或false
中的一个,动作脚本也会在适当时将值true和false转换为1和0。布尔值经常与动作脚
本中的比较运算符一起使用。
trace(3<1);
trace(-8<0);
对象(Object)::对象是属性的集合。每个属性都有名称和值,属性的值可以是任何的Flash
数据类型,甚至可以是对象数据类型。这样就可以使对象相互包含(即将其嵌套)。若要指
定对象及其属性,可以使用点(.)运算符。
影片剪辑(MovieClip):影片剪辑是Flash应用程序中可以播放动画的元件,是唯一引用
图形元素的数据类型。MovieClip数据类型允许您使用MovieClip类的方法控制影片剪辑
元件,可以使用点(.)运算符调用这些方法。影片剪辑是Flash中最活跃的元素之一。
trace(_root.mc._x);
trace(_root.mc._height);
Undefined:表示未定义的数据类型,如下情况返回undefined值:
(1)对象属性不存在,
例如没有定义变量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(Math.PI));
trace(typeof(3<1));
trace(typeof(System));
trace(typeof(stop));
显示对各类表达式使用typeof运算符的结果如下表所示。
运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作
数。例如,在语句“foo+3”中,“+”运算符会将数值文本的值添加到变量foo的值中;foo
和3就是操作数。
用运算符连接变量或者常量得到的式子叫做“表达式”。各种表达式用运算符连接在一
起还叫做表达式,例如:圆柱体表面积计算公式2*Math.PI*r*r+2Math.PI*r*h。
其中“2”和“Math.Pi”(表示圆周率π)都是常数,而“r”和“h”分别表示半径和高,
是变量。“+”和“*”分别表示加法运算和乘法运算,是运算符,这个式子就是表达式。
运算符的优先顺序
在同一语句中使用两个或多个运算符时,各运算符会遵循一定的优先顺序进行运算,例如加
(+),减(-)的优先顺序最低,(*),除(/)的优先顺序较高,而括号具有最高的优先顺序,当一
个表达式中只包含有相同优先级的运算符时,动作脚本将按照从左到右的顺序依次进行计
算;而当表达式中包含有较高优先级的运算符时,动作脚本将按照从左到右的顺序,先计算
优先级高的运算符,然后再计算优先级较低的运算符;当表达式中包含括号时,则先对括号
中的内容进行计算,然后按照优先级顺序依次进行计算。
算术运算符
可以执行加法、减法、乘法、除法运算,也可以执行其他算术运算。Flash中的算术运算符
及简单的用法如下图加法运算实例
在场景中绘制三个动态文本,变量名分别为c1、c2、c3。再绘制两个输入文本,变量名为
a、b。放入四个按钮,分别选中按钮输入AS:
(1)数字类型相加
c1=3+2;
(2)字符串相加
c2="学习"+"flash";
(3)输入文本中的变量相加
c3=a+b;
(4)字符串类型转化为数字类型
c3=Number(a)+Number(b);
说明:在执行加法运算时,如果,操作数是数字类型,那么执行的加法就是数字相加,如果
操作数是字符串类型,那么这里的加法就是合并字符串;如果,操作数中有字符串,有数字,
那么程序就会把其中的数字当成字符串;动态文本和输入文本中的变量值,程序都把它看成
字符串类型,要执行数字相加时,要转化成数字类型。例如上例中的
区别x++和++x
场景第1帧上
x=1
y=1
(1)x++
a_txt=++x;
(2)++x
b_txt=y++;
帧循环i++
场景第1帧上:
i=1;
场景第2帧上:
i++;
a_txt=i;
场景第3帧上:
gotoAndPlay(2);
播放按钮上:
this.play();
停止按钮上:
this.stop();
说明:在使用增量运算符时,运算符放在表达式前面与放在后面所执行的操作是不同的,当
用++i格式时将先执行加1操作,然后在使用表达式的值,当使用i++格式时则首先使用表
达式的值然后执行加1操作。
取模运算
vari=0;
按钮上:
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..22赋值运算符
FLASH用了大量的赋值运算符,可以使设计的动作脚本更简洁,下面列出了FLASH中使用
的赋值运算符。赋值运算符原理
第1帧上初始变量:
a=b=c=d=e=100;
按钮1上的AS:
a+=1;
a_txt1=a;
按钮2上的AS:
b-=1;
a_txt2=b;
按钮3上的AS:
c*=0.1;
a_txt3=c;
按钮4上的AS:
d/=0.1;
a_txt4=d;
按钮5上的AS:
e+=5;
e%=2;
a_txt5=e;
鼠鼠标标跟跟随随特特效
((11))在在舞台上用静态文本输入文字“鼠标跟随特效”一次分离后,分别把各个
字分别转换为影片剪辑元件。注意:转换时注册点要居中。然后依次分别输入实例名称:
“mc1”、“mc2”、“mc3”、“mc4”、“mc5”、
“mc6”、“mc7”
(2)插入“图层2”在“图层2”第1帧输入AS代码:
_root.mc1._x+=(_root._xmouse-_root.mc1._x)/5
_root.mc1._y+=(_root._ymouse-_root.mc1._y)/5;
_root.mc2._x+=(_root.mc1._x-_root.mc2._x)/5;
_root.mc2._y+=(_root.mc1._y-_root.mc2._y)/5;
_root.mc3._x+=(_root.mc2._x-_root.mc3._x)/5;
_root.mc3._y+=(_root.mc2._y-_root.mc3._y)/5;
_root.mc4._x+=(_root.mc3._x-_root.mc4._x)/5;
_root.mc4._y+=(_root.mc3._y-_root.mc4._y)/5;
_root.mc5._x+=(_root.mc4._x-_root.mc5._x)/5;
_root.mc5._y+=(_root.mc4._y-_root.mc5._y)/5;
_root.mc6._x+=(_root.mc5._x-_root.mc6._x)/5;
_root.mc6._y+=(_root.mc5._y-_root.mc6._y)/5;
(3)图层2第2帧上的AS代码:
语句讲解:
(1)_root._xmouse—鼠标在场景中的横坐标;_root._ymouse—鼠标在场景中的纵坐标。
(2)计算移动距离的方法:
距离=(终点坐标-实例坐标)/速度
实例坐标+=距离
或者描述为:实例坐标+=(终点坐标-实例坐标)/速度。
它实现的效果是从实例的初始位置开始,减速地运动到终点。在上例中只不过终点坐标也
是实例坐标。
实际上就是计算出两实例距离,然后把这个距离除以5,每次移动距离的五分之一,所以把
这里的5叫做速度。
这个公式不仅用于实例的移动,如果用于影片剪辑的其它属性,如透明度可以实现实例透明
度慢慢变化,如:
mc._alpha+=(20-mc._alpha)/5
可以实现mc的透明度慢慢从100减到20。
用于比较表达式的值,然后返回一个布尔值(true或false)。这些运算符最常用于循环语句
在舞台上绘制四个动态文本框,变量名分别为:m_txt1、m_txt2、m_txt3、m_txt4。再放入两
个按钮。按钮1上的AS:
m1_txt=1==2;
m2_txt=1>2;
m3_txt=1<2;
m4_txt=1!=2;
按钮2上的AS:
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代码:
x=Number(x_txt);
y=Number(y_txt);
z=(x z_txt=z; 清空按钮上的AS代码: x_txt="" y_txt="" z_txt="" 说明:影片播放时分别在输入文本中输入不能的数值,点击运算按钮,观察返回值,从而理 解其原理。 制作一个小球旋转的影片剪辑元件,输入实例名mc,放入一个按钮,然后输入AS代码: 场景第1帧上的AS代码: vari=1 按钮上的AS代码: i++%2==0_root.mc.play():_root.mc.stop(); 说明:此例中是用取模来分支的,我们也可要用布尔值来进行分支,例如上例中可以这样写 语句: 第1帧上: vark=false; k_root.mc.play():_root.mc.stop(); k=!k; 如果要控制几个影片剪辑代码要以这样写: i++%2==0[_root.mc1.play(),_root.mc2.play()]:[_root.mc1.stop(),_root.mc2.stop()]; 逻辑运算符对布尔值(true和false)进行比较,然后返回第三个布尔值。在表达式中,用 户可以使用逻辑运算符来判断某个条件是否存在。逻辑运算符主要用在if和dowhile动作 中。有关逻辑运算符及其功能如表逻辑运算原理 说明:我们打开素材,播放状态下,点击按钮,观察逻辑运算的返回值,从而理解逻辑运算 原理。 1.运行Flash8,大小默认,帧频为24fps。 2.在舞台上绘制一个直径为60的无笔触放射状填充的小正圆(小球)。 3.选中小球,按F8键转化为影片剪辑元件,注册点居中。 4.选中小球,在属性面板里输入实例名:“mc” 5.插入“图层2”,把“图层2”重命名为“AS”。 6.在“AS”的第2帧,第三帧上插入空白关键帧。 在第1帧上添加AS代码: vari=20; varj=10; 第二帧上添加AS代码: _root.mc._x<=30||_root.mc._x>=520i=-i:0; _root.mc._y<=30||_root.mc._y>=370j=-j:0; _root.mc._x+=i; _root.mc._y+=j; 第3帧上的代码: 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) _root.mc.mc1._xscale+=10; _root.mc.mc1._yscale+=10; _root.txt="放缩度:"+_root.mc.mc1._xscale; _root.mc.mc1._xscale-=10; _root.mc.mc1._yscale-=10; _root.txt="放缩度:"+_root.mc.mc1._xscale _root.mc.mc1._rotation+=2; _root.txt="旋转度:"+_root.mc.mc1._rotation; 按纽4上的代码: _root.mc.mc1._rotation-=2; 按纽5上的代码: _root.mc.mc1._alpha-=5; _root.txt="透明度:"+_root.mc.mc1._alpha; 按纽6上的代码: _root.mc.mc1._xscale=100; _root.mc.mc1._yscale=100; _root.mc.mc1._rotation=0; _root.mc.mc1._alpha=100; _root.txt="还原" 在上例中我们学习了点运算符设置和获取影片剪辑的属性,但点运算符不能动态的设置影片 剪辑的属性。这一课中我们将学习动态的设置影片剪辑的属性。 脚本位置:全属函数|影片剪辑控制|setProperty 语法格式:setProperty(target:Object,property:Object,expression:Object):Void 功能:当影片播放时更改影片剪辑的属性。 参数: ◆target:Object—要设置其属性的影片剪辑的实例名称的路径。 ◆Property:Object—要设置的属性。 ◆Expression:Object—或者是属性的新的字面值,或者是计算结果为属性新值的等式。 点击:全属函数|影片剪辑控制|setProperty后, ◆目标—要设置其属性的影片剪辑的实例名称的路径。 ◆属性—要设置的属性 ◆值—或者是属性的新的字面值,或者是计算结果为属性新值的等式。 我们已经知道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)建立一个按钮,选中按钮,打开“动作”面板,写入代码: 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)在舞台上建立两个按钮元件。分别选中按钮,打开动作面板,写入代码: i<5i++:i=1; setProperty("qiu"+i,_x,100*i); setProperty("qiu"+i,_y,180); setProperty("qiu"+i,_alpha,100-(i-1)*20); setProperty("qiu"+i,_y,2/3*100*i); 在场景第1帧输入代码: vari=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,可以这样来表示: _root.mcA["mc"+i] 又如要访问"mc"+i中的变量txt,可以这样来表示: _root["mc"+i+".txt"] 利用动态路径批量更改影片剪辑的属性。。 (1)打开源文件。 (2)进入qiu1的编辑场影中,插入“图层2”在此图层上建立一个动态文本,在属性面板 里输入变量名txt。 因为另外四个影片剪辑实例是由qiu1复制的,所以每个影片剪辑实例中都有了动态文本。 (3)把两个按钮上的代码分别改为: _root["qiu"+i]._x=100*i; _root["qiu"+i]._y=180; _root["qiu"+i+".txt"]="qiu"+i; _root["qiu"+i]._alpha=100-(i-1)*20; _root["qiu"+i]._y=2/3*100*i; 测试影片, 说明:动态路径在实际编程中运用非常广泛,它大大提高了编程的效率。有关动态路径更多 应用将在后面的章节里讲解。 掌握if语句、if-else语句、elseif语句的语法格式及其功能。 一个程序都是由若干个基本结构组成,每个基本结构包含一个或多个语句。程序有三种基本 结构,顺序结构、选择结构、循环结构。 在实际运用中,往往有一些需要根据条件来判断结果的问题,条件成立是一种结果,条件不 成立又是一种结果。像这样比较复杂的问题就必须用选择结构来解决。 在选择结构程序中,有一个条件,当条件为真时,执行一段代码,否则的话,执行另一段 代码,所以选择结构的程序的特点是只能执行两段代码中的一段。 在这一课中我们将继续学习条件语句。 脚本位置:语句|条件/循环|if语句 语法格式: if(条件){//小括号里的条件是一个计算结果为true或false的表达式。 这里是当条件计算为true时执行的指令 功能:其中,if是表示条件语句的关键词,注意字母是小写,这个if语句的功能是if后面 小括号里面的条 件只能有两种结果:真(true)或假(false)。只有当条件为真时才执行大括号中的程序,如 果条件为假, 将跳过大括号中的程序,执行下面的语句。if语句执行过程如图参数:condition:Boolean—计算结果为true或false的表达式。 if语句执行过程(1)如图所示,在舞台上建立一个输入文本,三个动态文本,(按照图中从上到下的顺序 排列),按照这个顺序依次分别输入变里名:“a_txt”、“b_txt”、“c_txt”、“d_txt”。 (2)插入“图层2”,在“图层2”上建立两个按纽实例(计算按钮和清空按纽)。 (3)选中计算按钮,打开动作面板,输入下面代码: vark=Number(a_txt); b_txt=(k%3==0); if(k%3==0){ c_txt="a能被3整除"; d_txt="这里显示的是花括号后面的语句"; (4)选中清空按钮,打开动作面板,输入下面代码: a_txt=""; b_txt=""; c_txt=""; d_txt=""; (5)测试影片,在输入文本时输入数字。点击计算按钮,可以看到当条件为真时执行大括 号内的语句,当条件为假时跳过大括号执行大括号外的语句。 条件语句中的条件 (1)条件语句中的条件可以非常简单,一个变量也可以作为一个条件,如果变量有一个确 定的值,它返回的结果是真,如: var我的名字="雷克斯de眼泪"; if(我的名字){ trace(我的名字); (2)条件语句中的条件还可以是一个赋值表达式。如: if(我的名字=="雷克斯de眼泪"){ (3)if名句中的条件可以是多个的,要用逻辑运算符进行连接,这时flash将进行判断, 计算最后的结果是真还是假,如: var用户名="雷克斯de眼泪"; var用户密码="123"; if(用户名=="雷克斯de眼泪"&&用户密码=="123"){ trace("用户名和密码正确"); 在这段代码中,if中的条件有两个,用&&运算符来连接,代表两个条件都为真时才执行语 句中大括号内的代码。 总结:由此可见,条件的类型一般为逻辑表达式和关系表达式,但也可以是任意的数据 类型。这时flash将按真处理。 if-else语句 if-else语句的一般形式为: //程序1,条件为真时执行的程序 //程序2,条件为假时执行的程序 功能:当条件成立时执行程序1,当条件不成立时执行程序2,这两个程序只选择一个执行 后,就执行下面的程序。if-else语句执行的过程如图if-else语句执行的过程 (1)如图所示,在舞台上建立一个输入文本,在属性面板里设置变量名为“a_txt”,再建 立三个动态文本,变量名分别为“b_txt”、“c_txt”、“d_txt”。(2)插入新图层,在此图层上建立两个按钮实例,用于计算和清空。 (3)单击“清空”按钮上的代码: 计算按钮上的代码: d_txt="a不能被3整除"; (4)测试影片,在输入文本时输入数字。点击计算按钮,可以看到当条件为真时执行程序1, 当条件为假时执行程序2。 小课件100以内的加法运算 课件效果 本例是一个测试100以内的两个整数加法运算的填空题课件,运行课件时,单击“请出题” 按钮,随机显示两个加数,填好答案后,单击“查成绩”按钮,即可判断答题是否正确。制作步骤 1.新建一个flash文档,文档属性保持默认设置。 2.新建一个名为“填空题”的影片剪辑元件,将“图层1”更名为“背景和标题”,然后 在此图层上创建背景和标题。 3.新建一个名为“动态文本”的图层,在这个图层上,创建4个动态文本框,在属性面板 里设置好文本属性,并输入分别输入实例名a、b、c、d。(其中a、b用来显示两个加数,c 用来显示和,d用来显示反馈)按照它的们的功能,安排好位置。再用静态文本输入“+” 号和“=”号。 4.新建一个名为“按钮”的图层,在此图层中,创建两个按钮实例,一个用来出题,一个 用来查成绩。 5.给按钮添加代码: 出题按钮上的代码: a=random(100); b=random(100); c=""; d=""; 查成绩按钮上的代码: if(Number(a)+Number(b)==Number(c)){ d="答对了!"; d="答错了!"; 6.回到场景,从库里提出名为“填空题”的影片剪辑元件,居中对齐。测试影片。 elseif语句 脚本位置:ActionScript语言元素>语句>elseif语句 if(条件1){ 程序1; }elseif(条件2){ 程序2; … }elseif(条件s){ 程序(s); 功能:elseif语句是这样执行的:进行条件1的判断,如果条件1为真执行程序1,如果 条件1为假则跳过程序1,进行条件2的判断,其它依此类推。 心心相印 心脏每时每刻都在不停的跳动,我们利用变量的递增递减及条件语句可以实现这个效果。当 数字增大时心脏变大,当数字减小时心脏变小。 制作步骤: (1)新建一个FLASH文档,大小默认。 (2)新建一个名为“跳动的心”的影片剪辑元件,在其编辑区绘制一个心脏。 (3)把心脏转化为影片剪辑元件,注册点在图形的中心。在属性面板中设置心脏的实例名 为:“heart”。 (4)建立一个名为AS的层,单击第一帧,打开动作面板,输入下列代码: vari=1; varj=8; varcon=true; 在AS层的第2帧插入空白关键帧,在其动作面板中输入下列代码: heart._xscale=heart._yscale=i+100; if(con){ i--; if(i==1){ con=true; }elseif(i==j){ con=false; 在AS层的第3帧插入空白关键帧,在其动作面板中输入下列代码: (5)返回主主场景,把库里的跳动的心提进主场景,可以看到心脏在不停的跳动。 件的,它只和其驱动函数on(...)中 的事件有关,影片剪辑和按钮一样也支持事件驱动,它的驱动函数为onClipEvent(...);通常 叫做影片剪辑的事件处理函数,其中的事件分为影片播放(load,enterframe,data等)和用户反 入帧Script,所以影片剪辑的控制功能十分强大。 脚本位置:全局函数|影片剪辑控制|onClipEvent处理函数 语法格式:在FLASH中使用onClipEvent命令来根据影片剪辑的状态触发动作, onClipEvent通常使用以下的格式 onClipEvent(事件名称){ //程序 功能:触发为特定影片剪辑实例定义的动作。 参数:movieEvent:Object-movieEvent是一个称为事件的触发器。当事件发生时,执行 该事件后面大括号({})中的语句。可以为movieEvent参数指定下面的任一值: 事件的触发器常见的取值如下:编写程序时,Flash会自动提示onClipEvent()的事件名称,在一个影片剪辑的“动作”面 板中输入onClipEvent时会自动弹出事件列表 Load事件 load事件在影片剪辑完全加载到内存中时发生。在每次播放Flash影片时,每个影片剪辑的 load事件只发生一次。 (1)在场景中建立一个影片剪辑实例,选中实例,打开“动作”面板,输入下列代码: onClipEvent(load){ trace("发生load事件"); (2)测试影片,在“输出”面板中看到的输出信息只有一次。 (3)返回主场景,在第二帧插入一帧,测试影片,虽然帧不断循环播放,但输出信息也只 有一次。 (4)返回主场景,在第二帧插入一空白关键帧,让其循环播放。测试影片,将不断的输出 一出现时就会加载这些变量,其它程序就可以调用这些变量。 Unload事件 对比load事件和unload事件,在上面实例的基础上,执行下列操作。 (1)打开影片剪辑的实例面板,把代码改为: onClipEvent(unload){ trace("发生unload事件"); (2)移出第二帧上的空白关键帧,在第20帧插入帧,第21帧插入空白关键帧。第40 帧插入帧。 测试影片,观看输出信息。间隔地发生load事件和unload事件 一个事件enterFrame的重要性。enterFrame事件是以影片剪辑帧频不断触发的动作。且触发 的频率与Flash影片的帧 频一致。enterFrame事件首先处理与enterFrame影片剪辑事件关联的动作,然后才处理附 加到受影响帧的所有动作。 enterFrame事件其实是一个不断执行的程序,执行的速度取决于帧频。Flash中默认的帧频 enterFrame事件制作计时器 制作: (1)在舞台上建立两个动态文本,并在属性面板里设置变量名为:“a_txt”、“b_txt”。 在第2帧插入帧 (2)插“图层2”,在此图层上用静态文本输入文字:“简单记时器”,然后转化为影 片剪辑元件。在第2帧插图入关键帧。 (3)选中此实例,打开“动作”面板,输入下列代码: _root.stop(); //当影片载入时初始变量i //影片进入帧时,程序每执行一次,i加1 _root.a_txt=i; //场景中的动态文本显示i的值 _root.b_txt=Math.round(i/12*100)/100; (4)插入“图层3”在“图层3”建立三个按钮实例,分别用作“计算”、“停止”、 清除 (5)分别选中两个按钮,打开“动作”面板,输入下列代码: gotoAndStop(2); gotoAndStop(1); 清除按钮上的代码: i=0; (5)插入“图层4”在“图层4“的第1帧添加代码: 测试影片。 通过这个实例我们可以看到:enterFrame事件是以影片剪辑帧频不断触发的动作。且触发 的频率与Flash影片的帧频一致。 mouseDown事件:每次移动鼠标时启动此动作。_xmouse和_ymouse属性用于确定当前鼠 mouseMove事件:当按下鼠标左键时启动此动作 mouseUp事件:释放鼠标左键时启动此动作 对于这三个鼠标响应事件,要与按钮中的鼠标事件区别,前者在影片的任何位置都能触发事 件,后者一定要单击按钮区域才会触发事件。 (1)新建一个影片剪辑“元件1”,在其编辑区中给制一个小球,用放射状填充,填充色 为#FBFBFB、#070707,居中对齐,然后把绘制好的小球转换为影片剪辑“元件2”。 (2)选中元件1中的“元件2”,打开动作面板,添加代码: kk=false; onClipEvent(mouseDown){ kk=true; onClipEvent(mouseUp){ if(kk){ _x+=(this._parent._xmouse+_x)/20; _y+=(this._parent._ymouse+_y)/20; }elseif(kk==false){ _x+=(this._parent._xmouse-_x)/20; _y+=(this._parent._ymouse-_y)/20; (3)把“元件”1提到场景,用任意变形工具把小球的注册点移到垂直下移到小球外,再 用变形面板,设置旋转60度,点击复制并应用变形按钮5次,复制出5个小球,此时6 个小球排成一排 (4)在属性面板里分别改变小球的颜色。 (5)测试影片。鼠标移动,按下,释放观看效果。 (1)新建一个影片剪辑元件。返回主场景,打开“库”面板,从“库”面板中拖出影片剪 辑,创建一个空影片剪辑实例。 (2)选中场景中的空影片剪辑实例,打开“动作”面板,输入下面代码: onClipEvent(mouseMove){ if(myDraw){ _root.lineStyle(5,0xFF0000,100); _root.lineTo(_root._xmouse,_root._ymouse); //当鼠标移动时,沿鼠标位置不断画线 myDraw=true; _root.moveTo(_root._xmouse,_root._ymouse); //鼠标按下时myDraw为真,并在鼠标位置定义画线的起点 myDraw=false; //当鼠标释放时,myDraw为假,停止画线 (3)在舞台上创建一个按钮,在按钮上添加代码: clear()//删除所画线 提示:使用moveTo()和lineTo()函数时只需在函数中加入参数,如moveTo(x1,y1)代 表从点(x1,y1) 处开始画线,lineTo(x2,y2)代表画线的终点是((x2,y2)。使用这两个函数之前必顺先用 lineStyle()函数定 义线的式样。 moveTo()功能:将当前绘画位置移动到(x,y)。如果缺少任何一个参数,则此方法将失败, 并且当前绘画位 置不改变。您可以通过创建子类来扩展MovieClip类的方法和事件处理函数。 lineTo()功能:使用当前线条样式绘制一条从当前绘画位置到(x,y)的线条;当前绘画 位置随后会设置为(x,y)。如果正在其中绘制的影片剪辑包含用Flash绘画工具创建的内 容,则调用lineTo()方法将在该内容下面进行绘制。如果在对moveTo()进行任何调用之 前调用了lineTo(),则当前绘画位置默认为(0,0)。如果缺少任何一个参数,则此方法将失 败,并且当前绘画位置不改变。 lineStyle()功能:指定Flash用于后续lineTo()和curveTo()方法调用的线条样式,在以 不同参数调用lineStyle()方法之前,线条样式不会改变。可以在绘制路径的中间调用 lineStyle()以为路径中的不同线段指定不同的样式。 keyDown:当按下某个键时启动此动作。使用Key.getCode()获取有关最后按下的键的信息 KeyUp:当释放某个键时启动此动作。 小结:在onClipEvent()函数的事件中load事件和enterFrame事件是最常用,最重要的。 大家一定要 掌握好。在影片剪辑上写命令一定要选加上onClipEvent()事件处理函数。就如同在按钮 上加命令要先加on命令。这一点大家一定要牢牢记住。 duplicateMovieClip()函数 duplicateMovieClip()函数的作用是通过复制创建的影片剪辑的实例。在Flash作品中常见的 倾盆大雨、雪花飘飘、繁星点点等动画特效,就是利用duplicateMovieClip()函数的功能来 实现的。 脚本位置:全局函数|影片剪辑控制|duplicateMovieClip 语法格式:duplicateMovieclip(目标、新实例名称、深度); 参数意义: 目标:target:Object-要复制的影片剪辑的目标路径。此参数可以是一个字符串(例如 "my_mc"),也可以是对影片剪辑实例的直接引用(例如my_mc)。能够接受一种以上数据 类型的参数以Object类型列出。 新实例名称:newname:String-所复制的影片剪辑的唯一标识符。 深度:depth:Number-所复制的影片剪辑的唯一深度级别。深度级别是所复制的影片剪 在较高堆叠顺序的剪辑之下。必须为每个所复制的影片剪辑分配一个唯一的深度级别,以防 止它替换已占用深度上的SWF文件。 函数:当SWF文件正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑 中处于什么位置,在重复的影片剪辑中,播放头始终从第1帧开始。原始影片剪辑中的变 量不会复制到重复的影片剪辑中。 在使用duplicateMovieClip()函数时,需要注意以下几点。 (1)复制得到的影片剪辑保持父级影片剪辑原来的所有属性,所以,原来的影片剪辑是静 止的,复制后的影片剪辑也是静止的,并且一个叠放在另一个上。如果不给它们设置不同坐 标,就只能看到编号最大的影片剪辑复本,而看不出复制的效果。 (2)原来的影片剪辑在做补间运动,那么复制品也要做同样的运动,并且无论播放头在原 始影片剪辑(或“父”级)中处于什么位置,复制的影片剪辑播放头始终从第上帧开始。所以, 也可以看到复制品在运动。 (3)复制得到的影片剪辑实例经常要与影片剪辑属性控制(特别是 _x,_y,_alpha,_rotation,_xscale,_yscale等属性的控制)结合才能更好地发挥复制效果。 removeMovieClip()函数 通过duplicateMovieClip()函数产生的实例可以通过removeMovieClip()函数进行删除。 removeMovieClip()函数的一般形式为: removeMovieClip(实例名) 复制与删除) (1)在舞台上绘制一朵小花,按F8键转化为影片剪辑元件。并建立实例名“mc”。 (2)插入“图层2”在此图层的第1帧输入代码: 在场景中建立两个按钮,(复制按钮和删除按钮)。分别在两个按钮上输入代码: if(i<=12){ duplicateMovieClip("mc","mc"+i,i); i=12; _root["mc"+i]._x=275+120*Math.sin(i*1/6*Math.PI); _root["mc"+i]._y=180+120*Math.cos(i*1/6*Math.PI); if(i>=1){ removeMovieClip("mc"+i); attachMovie() 脚本位置:ActionScript2.0影片|MovieClip |方法|attachMovie 语法格式:attachMovie(目标,新实例名,深度,[对象参数]) 说明:这条语句中的四个参数,第四个参数是可选,如果不使用第四个参数,那么它的参数 设置同duplicateMovieClip()是一样的,但也有一点区别,在attachMovie()函数中的第一 个参数只能是字符串类型。而duplicateMovieClip()的第一个参数,可以是一个字符串,也 可以是对影片剪辑实例的直接引用。 attachMovie()语句与duplicateMovieClip()相比,优点是attachMovie()复制的“目标”是库中 要附加到舞台上某影片剪辑的影片剪辑元件的链接名称。这是在“链接属性”对话框中的“标 识符”字段中输入的名称。 在上例中我们可以这样来什么时候修改 (1)把舞台上小花实例删除。 (2)打开库,右键单击库中的花实例,在弹出的链接属性对话框中,把作为Actionscript导 出选项选中,在标识符栏输入“mc”。 在复制按钮上把语句改为: attachMovie("mc","mc"+i,i); (1)打开素材源文件。打开库,分别右键点击落三朵梅花,在链接属性对话框中输入 标识符“h0”、“h1”、“h2”. (2)分别进入小花影片剪辑编辑区,在最后一帧添加语句:stop(); (3)选中场景中的梅枝影片剪辑元件,打开动作面板添加代码: varn=random(3); attachMovie("h"+n,"mc"+i,i); this["mc"+i]._x=this._xmouse; this["mc"+i]._y=this._ymouse; this["mc"+i]._rotation=random(5)*(120); (1)新建一个名称为“线”的的影片剪辑元件。进入其编辑区里,在第一帧上绘制一条笔 触高度为1长为150的白色线条。利用对齐面板,左对齐、垂直中齐。 (2)分别在第10帧、第20帧、第30帧、第40帧插入关键帧。并改变第10帧,第20 帧、第30帧上线条的着颜色,然后再把第1帧和第20帧、第40帧上的线条改为线 (3)新建一个名称为“复制线条”的影片剪辑元件。进入“复制线条”的影片剪辑元件编 辑区里,在“图层1”的第1帧,从库里提进“线条”影片剪辑元件。左对齐、底对齐。 在属性面板里输入实例名“line”。 (4)插入“图层2”,在此图层写AS: 第一帧上的AS: line._visible=0; 第二帧上的AS: duplicateMovieClip("line","line"+i,i); this["line"+i]._rotation=i*3; this["line"+i]._x=0 this["line"+i]._y=0 第四帧上的AS: if(i<120){ 说明:在第一帧上初始化变量,在第二帧上复制线条,在第四帧上控制雪花的复制数量,如 果不加控制,就会造成死循环,最后死机。第三帧上的语句可以解释为:如果i<120就跳 转到第二帧,继续复制,否则就跳转到第一帧,重新复制。这种三帧循环用得很多,大家一 定要掌握。 (5)回到主场景,从库里提出复制线条影片剪辑元件。测试影片。 startDrag()函数 脚本位置:全局函数|影片剪辑控制|startDrag 语法格式:startDrag(target:Object,[lock:Boolean,left:Number,top:Number, right:Number,bottom:Number]):Void 即:startDrag(目标,固定,左,上,右,下) 参数意义:目标(target)表示要拖动的影片剪辑的目标路径。 固定(Lock)是一个布尔值,指定的可拖动影片剪辑是锁定到鼠标指针位置中央(true),还 是锁定到用户首次单击该影片剪辑的位置上(false)。此参数是可选的。 Lefk、top、right、bottom、这四个参数分别设置影片剪辑拖动在左、上、右、下的范 围,注意相对于影片剪辑父级坐标的值,这些值指定该影片剪辑被约束的矩形。这些参数 是可选的。 函数功能:startDrag()函数的作用是使影片剪辑实例在影片中播放过程中可拖动。 stopDrag()函数 语法格式:stopDrag() 函数功能:停止当前的拖动操作。 理解startDrag()函数中参数的作用 制作步骤 (1)在舞台上任意绘制一个图形,选中图形,单击“修改”|“转换为元件” 命令,把图形转换为影片剪辑元件。 (2)选中舞台上影片剪辑元件,在属性面板的影片剪辑的”实例名称”中填入mc。 (3)单击“窗口”|“其它面版”|“公用库”|“按钮”命令,打开公用库面板,从中选择 按钮拖放到舞台中。 (4)分别在按钮中添加如下AS: 第1个按钮中的AS为: startDrag(_root.mc); //实现mc的鼠标跟随.。效果是元件与鼠标有间隔。 第2个按钮中的AS为: startDrag("_root.mc",true); //是否锁定参数为真。元件与鼠标无间隔。 第3个按钮中的AS为: startDrag("_root.mc",true,0,0,550,400); //宽550高400的矩形范围内拖动 第4个按钮中的AS为: startDrag("_root.mc",true,0,100,550,100); //宽0高为200的线型范围。 第5个按钮中的AS为: stopDrag(); //停止startDrag() (5)、保存测试影片,单击不同的按钮所产生的不同效果。注意第4个按钮按下后就只能点 第5个按钮,之后才能点击其它按钮.想想这是什么原因? 说明:startDrag()可以作为影片剪辑的方法,上面示例的语句也可以这样来写: 以第1个按钮为例: mc.startDrag();//实现mc的鼠标跟随.无参数。效果是元件与鼠标有间隔。 幻影泡泡 1.运行Flash8,背景色为黑色,其它默认。 2.新建一个名为“泡泡图”的图形元件。在其编辑区里绘制一个直径为100的正圆,填充 颜色 3.新建一个名为“泡泡”的影片剪辑元件,在其编辑区“图层1”的第1帧库里提进图形 元件“泡泡图”居中对齐。接下来在第12帧,第19帧插入关键帧,并在第1帧上把泡 泡大小设为:48×48,alpha值为:50%,第12帧上,大小:60×60,alpha值为:100%。 第19帧上,大小:80×80,alpha值为0。创建动作补间动画。在20帧上插入控白关键 帧加上停止命令:stop();。 4.新建一个名为鼠标的影片剪辑元件,在其编辑区里绘制一个鼠标图形。插入“图层 2”, 把“图层1”的第1帧复制粘贴到“图层2”的第1帧上,并在此帧上改变填充效果。 分别在两个图层的第10帧插入帧。 插入图层3,在图层3上绘制一个如图12-5所示的矩形条,组合,在第10帧上插入关 建帧,把矩形条移至鼠标图的右下方,如图12-6所示。创建补间动画。并把图层3设为遮 罩。 5.回主场景,在主场景的第1帧上,从库里提进“泡泡”影片剪辑元件,输入实例“mc”。 插入“图层2”,在“图层2”的第1帧上,从库里提进“鼠标”影片剪辑元件,输入实 例“ms”。 并选中此实例,打开动作面板输入AS代码: k=1; startDrag(_root.ms,true); Mouse.hide();//隐藏指针 k++; if(k>20){ duplicateMovieClip("_root.mc","mc"+k,k); msx=getProperty(_root.ms,_x); msy=getProperty(_root.ms,_y); setProperty(_root.mc,_x,msx-25); setProperty(_root.mc,_y,msy-30); 6.制作完毕,测试保存。 提示:Mouse.hide();//隐藏指针 脚本位置:ActionScript2.0类|影片|Mouse|hide(Mouse.hide方法) 拼图游戏 1.导入一张图片到舞台,调整好大小。选中图片,执行“修改菜单”下的“分离”命令, 然后用“直线工具”把图片12等分。 2.分别选左上角的第一份,按F8键转化为影片剪辑元件,在“转换为元件”对话框中设 置元件名为图1,注册点居中。然后在属性面板里建立实例名为:“mc1”。 3.选中此影片剪辑元件,打开动作面板,输入如下代码: this.swapDepths(getNextHighestDepth()); startDrag(this,true); 4.用同样的方法制作另外的11个影片剪辑。 5.制作好后,把场景中的各影片剪辑位置打乱,放在舞台的右边。 6.插入“图层2”,在些图层的左上角放上原图的缩略图。作为拼图时的参考。 代码解释: (1)swapDepths(MovieClip.swapDepths方法) 脚本位置:ActionScript2.0类|影片|MovieClip|swapDepths 功能:交换此影片剪辑与另一影片剪辑的堆栈或深度级别(z-顺序),另一影片剪辑由target 参数指定, 或指定为当前占用由target参数指定的深度级别的影片剪辑。两个影片剪辑必须具有相同 的父级影片 剪辑。 my_mc.swapDepths(depth/target); my_mc1.onRelease=function(){ this.swapDepths(1); my_mc2.onRelease=function(){ this.swapDepths(my_mc1); getNextHighestDepth() my_mc.getNextHighestDepth(); my_mc._parent.getNextHighestDepth(); (2)getNextHighestDepth(MovieClip.getNextHighestDepth方法) 脚本位置:ActionScript2.0类|影片|MovieClip|方法|getNextHighestDepth 功能:以确保Flash将该影片剪辑呈现在当前影片剪辑中同一级和同一层上所有其它对象 的前面。 以上两条语句大家想进一步了解,请查看帮助。 示例12-4滑条控制 滑条控制是一种很有用的控制方法,比如在MP3播放器中,用滑条来控制音量、声道等。下 面我们介绍 一个简单的滑条控制 (1)打开素材 (2)双击库中的“滑快1”影片剪辑元件,进入其编辑区,选中按钮,打开动作面板,添 加代码: startDrag(this,true,-50,0,50,0); on(release,dragOut){ (3)双击库中的“滑快2”影片剪辑元件,进入其编辑区,选中按钮,打开动作面板,添 startDrag(this,true,0,-50,0,50); (4)分别进入“横控制条”和“纵控制条”两个影片剪辑元件的编辑区,分别给两个滑块 建立实例名称: “h_mc1”和“h_mc2”。 (5)在场影中给横控制条命名实例名“xbut”,给横控制条命名实例名“ybut”。给红 色正方形元件命名实 例名“mc”。 (6)场景中的动态文本,按从上到下的顺序,在属性面板里依次输入实例名“a_txt”、 “b_tat”、“c_txt”。 (7)选中红矩形影片剪辑元件,打开用作面板,添加代码: dx=_root.xbut.h_mc1._x; dy=_root.ybut.h_mc2._y; xx=_root.mc._width=dx+100; yy=_root.mc._height=dy+100; _root.a_txt=xx; _root.b_txt=yy; _root.c_txt=Math.round(xx*yy); for循环语句是功能最强大,使用最灵活的一种循环语句,它不仅可以用于循环次数已经确 定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况。 脚本位置:语句|条件/循环|for 语法格式:for(初始表达式;条件表达式;递增(或递减)表达式){语句块//或者称循环 体} 初始表达式:一个在开始循环序列前要计算的表达式,通常为赋值表达式。此参数还 允许使用var语 句。为赋值表达式时。推荐使用var可以使运行加快。其原理主要是使用了本地变量。 条件表达式:计算结果为true或false的表达式。在每次循环迭代前计算该条件;当 条件的计算结果为false时退出循环。 递增(或递减)表达式:在每次循环迭代后要计算的表达式;通常为使用++(递增) 或--(递减)运算符的赋值表达式。 语句块。在大括号内的所有指令组。统称循环体。 说明:for语句中的三个表达式,中间用分号隔开。第一个初始表达式通常用来设定语句循 环执行次数的变量初值,这个表达式只会执行一次;第二个条件表达式通常是一个关系表达 式或者逻辑表达式,用来判定循环是否继续;第三个递增表达式是每次执行完“循环体语句” 以后,就会执行的语句,通常都是用来增加或者减少变量初值。 for语句的执行流程图for求和 (1)在场景中制作一个如图的界面(2)在属性面板里分别给三个动太文本输入为量名“a_txt”、“b_txt”、“c_txt” (3)选中按钮,打开动作面板,添加代码: k1=0; k2=0; a_txt=0; b_txt=0; c_txt=0; for(i=1;i<=100;i+=2){ k1+=i; k2+=i+1; a_txt=k1; b_txt=k2; c_txt=k1+k2; 注意: 1.用类似形式可以方便的控制循环的次数,此例中,100就是循环的次数。 2.循环体内可以使用”i”的值参与运算。有时这种参与是非常必要的。 3.三个表达式内部用“;”分割。 提示: (1)for循环结构的原理如下,它首先计算一次表达式1,然后按照以下顺序开始循环序 列:只要表达式2的计算结果为true,就执行循环体,然后计算下一个表达式。 使用for循环语句的注意事项 2.在初始表达式中可以定义多个变量,两个表达式中间用逗号(,)分开,如: for(vari=1,sun=0;i<=100;i++){ sun=sun+i; trace(sun); 3.初始表达式也可以省略,但必顺在for语句前初始化变量,如: varsun=0; for(;i<=100;i++){ 注意:当省略初始表达式时,其后的分号不能省略。 4.递增表达式也可以省略,但必顺保正循环能正常结速,如: for(vari=0;i<=100;){ i+=1; 5.for语句中可以同时省略初始表达式和递增表达式,如: for(;i<=100;){ 这时程序和while完全一样,所以可以用for来代替while语句,也就是说for语句的功 能比while语句强大得多。 本例是实现一个烟花效果。鼠标点击后,会绽放一朵灿烂烟花。而烟花由小流星复制而成。 复制的个数由循环语句来控制的。 1.新建文档,背景黑色。其它默认。 2.新建一个名为“礼花1”的影片剪辑元件,在此元件的第1帧绘制一个流星式的图形。 3.在第10帧处插入关键帧,把绘制的图形右移,并适当放大。 4.在第19帧插入空白关键帧,任意绘制一个图形,位置相对第10帧上的图形的右移 5.创建每两关键帧之间的形状补间动画。 6.在库中右键点击“烟花1”影片剪辑元件,在快捷菜单中选择“链接”选项,在弹出的 “链接属性”对话框中输入标识符yh1 7.在库中右键点击“烟花1”影片剪辑元件,在快捷菜单中选择“直接复制”选项,在弹 出的“直接复制元件”的对话框中把元件名改为“烟花2”。 8.用同样的方法在制作另一朵烟花,(颜色与式样最好以第一朵有所区别)并设置标认符为 “yh2”。 9.导入一个烟花声音文件到库,右键点击声音文件,在快捷菜单中选择“链接”选项,在 链接属性对话框中设置声音标识任为“Sound”。 10.建立一个空影片剪辑,拖入场景。场景中它显示为一个空心小白点。用“黑箭头工具” 选中该小白点,打开动作面板,添加AS代码: vark=1; mySound=newSound();//创建一个声音对象 mySound.attachSound("Sound");//把库中的声音文件附加到所创建的声音对象上 k=-k; mySound.start();//播放声音 for(vari=1;i<=100;i++){ if(k==1){ this.attachMovie("yha","yh"+i,i); this.attachMovie("yhb","yh"+i,i); this["yh"+i]._x=_xmouse; this["yh"+i]._y=_ymouse; this["yh"+i]._rotation=random(360); this["yh"+i]._xscale=random(50)+10; this["yh"+i]._yscale=random(50)+10; 1.新建文档,背景黑色。 2.新建一个名为“心1”影片剪辑元件,在其编辑区内绘制一个“心图”形。 3.新建一个名为“心2”影片剪辑元件,把“心1”提进其编辑区内,居中对齐。选中“心 2”滤镜面板里添加发光滤镜效果。 4.在“链接属性”对话框中设置影片剪辑“心2”的标识符为“mc”。 5.新建一个名为“空”的影片剪辑元件,拖入场景,选中此空影片剪辑元件,输入AS: for(vari=1;i<=20;i++){ _root.attachMovie("mc","mc"+i,20-i); _root["mc"+i]._xscale=100-i*3; _root["mc"+i]._yscale=100-i*3; _root["mc"+i]._alpha=100-i*5; startDrag(_root["mc"+i],true); varzx=_root["mc"+(i-1)]._x-_root["mc"+i]._x; varzy=_root["mc"+(i-1)]._y-_root["mc"+i]._y; _root["mc"+i]._x=_root["mc"+i]._x+zx/4+zx/10; _root["mc"+i]._y=_root["mc"+i]._y+zy/4+zy/10; 在编程的许多问题中都要用到循环结构,比如要对10个数字的排序,两个数字之间的比较,如 果采用选择结构,进行的条件分支非常多,所以写的代码也相当长,利用循环结构可快速解决 这个问题,大大提高程序的效率. ActionScript语言中可通过四种语句实现程序的循环,分别是while、do...while、for循环和 forin循环语句.它们与if语句的最大区别在于只要条件成立,循环里面的程序语句就会不 断地重复执行.而if语句中的程序代码只可能被执行一次. while的格式如下: while(条件表达式){ 循环体; 说明:在运行语句块之前,首先测试条件表达式;如果该测试返回true,则运行该语句块。 如果该条件为false,则跳过该语句块,并执行while动作语句块之后的第一条语句。其流 程图如图所示.通常当计数器变量小于某指定值时,使用循环执行动作。在每个循环的结尾递增计数器的值, 直到达到指定值为止。此时,件条表达式的返回值不再为true,且循环结束。 求1+2+3+…+100的和 新建一个FLASH文档,在第一帧打开动作面板,输入下列代码: varsum=0; while(i<=100){ sum+=i; trace(sum) 代码执行过程: 在上面的循环程序中,变量i的初始值是1,表达式i<=100为真,变量sum加上1,然 后i+1等于2。再进行i<=100的判断,条件真,sum再加上2,i又加上2等于3,这样 循环执行,i一直自加到101,此时条件i<=100为假,结束循环。这样程序共进行了100 次判断,也就是进行了100次循环,100次执行表达式sum+=i,这样就算出了1+2+3+… +100和。 注意:在循环结构中,应该有使循环趋于结束的语句,在本例的代码中,用变量i来控制, i不断递加到101,使条件为假,结束循环。 在前面我们知道enterFrame事件也是循环执行的,但是循环结构的执行要快行多,我们通 过下面的小程控来测试while语句的执行速度: while(i<1000){ i++ }//进行100次循环 trace(getTimer()/1000-t+"秒"); 用while语句优化代码 大家还记得在第十四课中我们用加法赋值作了一个鼠标跟随效果,当时每个字我们都要分别 设置它的_x和_y。如果有10个字就要写20行语句,如果100个字呢,那不是就很麻烦 吗?我们用while就可以把代码优化了。 打开第十四课鼠标跟随特效源文件,把第1帧上的代码删除,选中第1个字的影片 剪辑元件,打开动作面板,输入代码: while(i<=6){ _root.mc1._x+=(_root._xmouse-_x)/5; _root.mc1._y+=(_root._ymouse-_y)/5; _root["mc"+i]._x+=(_root["mc"+(i-1)]._x-_root["mc"+i]._x)/5+8; _root["mc"+i]._y+=(_root["mc"+(i-1)]._y-_root["mc"+i]._y)/5; 说明: (1)如果字的个数增加了,只需改条件即可,例如是10个字,那么只需把条件i<=6改为 i<=10就可以了。 (2)由于我们用了enterFrame事件,所以第2帧就可以不要了。 用while循环实现批量复制影片剪辑 打开源文件,场景第一帧加上代码: varnum=5; while(i<=num){ attachMovie("qiu","qiu"+i,i); _root["qiu"+i]._x=Stage.width/6*i; _root["qiu"+i]._y=Stage.height/2 这段代码作用是复制5个影片剪辑实例,实例名分别为qiu1、qiu2、qiu3、qiu4、qiu5,并 实现横向等距离排列。要实现同样的交果,代码的写法有很多,如: while(i++ _root["qiu"+i]._y=Stage.height/2; 或者这样写: attachMovie("qiu","qiu"+i++,i); _root["qiu"+(i-1)]._x=Stage.width/6*(i-1); _root["qiu"+(i-1)]._y=Stage.height/2; _root["qiu"+(i-1)+".txt"]="qiu"+(i-1); dowhile语句: dowhile语句的格式 do{ }while(条件表达式) 说明:和while循环语句相反,dowhile循环语句是一种先斩后奏的循环语句。不管怎样 do{“和”}之间的程序至少要执行一次,然后再判断条件是否要继续循环。如果while()里 的条件成立,它继续执行do里面的程序语句,直到条件不成立为止。其流程图如图用dowhile语句求和 同样的累加问题:1+2+3+…+100,用dowhile语句程序为: sum=sum+i; }while(i<=100); trace(sum); 程序中的i不一定只能加1,可能加上任意数,比如求100以内的偶数之和,用这程这样 表示: }while((i+=2)<=100); 区别while与dowhile语句 (1)选中第1帧,打开动作面板,输入下列代码; varj=5 (2)在场景中创建两个按钮实例,分别测试两种语句的结果,两个按钮上的语句分别为; while(i trace(i); on(press){do{ }while(i trace(i) (3)测试影片,不断地单击按钮 从输出面板可以看出,当程序第一次执行时,就是第一次单击按钮时,。结果都是一样,都 是数字5。但多单击一次时,while语句结果还是5,而dowhile语句的测试结果不断加1, 原因是dowhile语句先执行程序,再进行条件判断,所以从第二次单击按钮开始,变量i就 加1。 小结: while与do_while结构都可以按照一定的条件循环执行循环体,wihle结构先判定循环条件, 当条件符合时就执行循环体,按顺序执行完循环体中的语句后,在返回wihle语句开始处,重新 判定条件,并以此规则进行循环操作,直到循环条件为false时终止循环,转而执行wihle结构 下面的命令,与wihle结构不同的是do_while循环结构先执行循环体中的语句,然后判定循 环条件.这就是说do_while循环结构无论条件是否符合,循环至少执行一次. 一个循环体内包含另一个循环体结构,称为循环的嵌套.在这一讲中我们介绍for语句的嵌套、for与while语句的嵌套。 二个for嵌套(乘法九九表) (1)在舞台上创建一个动态文本,变量名为:“sir” (2)插入“图层2”在此第1帧输入代码: varstr:String=""; for(vari=1;i<=9;i++){ for(varj=1;j<=i;j++){ vark=i*j; str=str+i+"×"+j+"="+k+(k<10"":"")+(j==i"\n":""); 三个for嵌套(求水仙花数) 提示:所谓的“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身,例如:153是一个,“水仙花数”,因为153等于1的立方加上5的立方加上3的立方。程序如下: varn=0; for(varj=0;j<=9;j++){ for(vark=0;k<=9;k++){ m=i*100+j*10+k; if(m==i*i*i+j*j*j+k*k*k){ n++; str=str+m+(n==0"":""); for语句可以和while语句嵌套使用。(因数分解) 下面我们做一个因数分解的程序。这个实例子for语句可以和while语句嵌套。 (1)在舞台上创建一个输入文本,变量名为:“my_txt1”,再创建一个动态文本,变量名为:“my_txt2”。 (2)创建两个按钮实例,分别用来做分解计算和清空 (3)添加代码: “分解”按钮上的代码: m=Number(my_txt1); varstr:String=m+"="; varflag=1; for(i=2;i while(m%i==0){ if(flag==1){ str=str+""+i; flag=0; str=str+"×"+i; m=m/i; if(m!=1){ str=str+"×"+m; my_txt2=str; my_txt1=""; my_txt2=""; 嵌套复制 (1)打开素材源文件。 (2)选中复制按钮,打开动作脚本面板,添加代码: for(i=1;i<=4;i++){ for(j=1;j<=4;j++){ duplicateMovieClip("mc","mc"+i+j,i*4+j); this["mc"+i+j]._x=(i-1)*100; this["mc"+i+j]._y=(j-1)*100; this["mc"+i+j+".txt"]="mc"+i+j; (3)选中删除按钮,打开动作在板,添加代码: removeMovieClip("mc"+i+j); 说明:本课中的实例理论性较强,牵涉的数学知识较多 组件是拥有已定义了参数的复杂影片剪辑,这些参数在文档创作时设置。通过参数的设置和使用,我们可以修改组件的外观和行为。每个组件都有自己的AS方法,允许我们设置和修改其选项。 FLASH提供几类组件,它包括数据组件、多媒体组件、UI组件。使用组件时,我们可以使用动作脚本方法添加组件,也可以按下Ctrl+F7组合键打开组件面板。 组件的添加和参数设置 使用组件面板来选择添加组件,按下Ctrl+F7组合键,打开组件面板,将需要的组件拖到场景中。打开属性面板,就可以在属性面板中的参数选项卡中为组件添加参数,并为组件命名和设置组件尺寸及位置。属性面板中的ComboBox组件参数选项卡如图所示 也可以按Alt+F7组合键打开组件检查器,如图所示,我们可以对组件进行设置。 建立ComboBox组件 下面通过使用组件面板来建立组件。 1、按下Ctrl+F7组合键,打开组件面板,选择UI组件类中的ComboBox组件,将它拖入场景中。 2、打开属性面板,在属性面板中的参数选项卡中为组件添加参数。选择labels项,单击labels右面的数据栏,弹出值对话框 3、在值对话框中输入数据项参数。 4、选择rowCount行数项,输入所需要的行数 测试效果 用程序指令控制组件 用程序指令处理组件时事件,有两种方法:一种使用on()函数控制组件,另一种使用Click组件侦听器控制组件。使用on()函数控制组件是FLASH传统的编程思想,容易理解和掌握。使用Click组件侦听器控制组件,是FLASH提倡使用的编程思想,这种方法更符合面向对象的编程特性,程序更安全,功能更强。 使用on()函数控制组件 1、建立组件对象。按下Ctrl+F7组合键,打开组件面板,选择UI组件类中的RadioButton组件,将它拖入场景中。 2、打开属性面板,在属性面板的参数选项卡中为组件添加参数。选择label数据项,在右面的数值栏中输入"选择" 3、对组件进行编程。选中组件,打开动作面板,输入帧指令: on(click){ trace("选择正确"); 测试影片,单击"选择"按钮,将在输出面板中输出"选择正确"字样 使用组件侦听器控制组件 将上例中控制组件的on()函数去掉,改为使用组件侦听器控制组件 1、选中场景中的组件,打开属性面板,在属性面板左边,输入组件实例名为"hack"。 2、选择第一帧,输入帧指令: zt=newObject();//建立侦听器对象 zt.click=function(){ };//为侦听器对象上的click定义一个函数 hack.addEventListener("click",zt);//将组件名为hack的组件注册到侦听对象 组件应用 利用组件制作选择题 1、按下Ctrl+F7组合键,打开组件面板,选择UI组件类中的RadioButton组件,将它拖入场景中。并复制一个RadioButton组件。在场景中建立选择题画面 2、选择左边的RadioButten组件,打开属性面板,在属性面板的参数选项卡中为组件修改参数。 在宽度栏输入60,将该组件的宽度改为60像素宽。 下面我们来解释下该组件的参数作用: data数据参数:在数据参数栏输入数据15,这个数据将会作为选择题的判断依据。 label标签参数:将标签参数改为"对"。 groupName组名参数:它是很重要的参数,拥有相同组名的单选按钮,同时只能有一个被选中,这样在同一组内就不会出现多个选择。在这个参数栏输入a1。 选择右边的RadioButten组件,在宽度栏同样输入60,将该组件的宽度改成了40像素宽。右边的label标签采纳数栏改成"错",数据栏data中输入数据"13",这个数据将会作为选择题的判断依据,在组名参数栏输入a1 3、选择右下方的文本框,打开属性面板,在左边的文本类型栏中选择动态文本,在文本类型栏下面输入文本框名为"txt" 4、插入新的图层,作为AS层,选中第一帧,输入帧指令: Listener=newObject();//建立侦听对象 Listener.click=function(hk){//建立侦听对象的click事件函数 if(15==hk.target.selection.data){//判断单选按钮组件中数据栏中的数值是不是等于15 txt.text="选择正确";//如果等于15,将"选择正确"赋予txt文本变量 txt.text="选择错误";//如果不等于15,将"选择错误"赋予txt文本变量 a1.addEventListener("click",Listener);//将组名为"a1"的单选按钮注册到侦听对象 测试影片 fscommand命令 fscommand命令是一个非常强大的浏览器与网络动作命令。它可以让FLASH影片能够与FLASH播放器或者承载FLASH播放器的程序进行通信。还可以将消息传递给其他应用程序(比如VB、C++等),它的语法格式如下: fscommand(command:String,parameters:String):Void fscommand命令包含两个参数,即command和parameters,各自的意义如下: "command:String"是传递给主机应用程序用于任何用途的一个字符串,或者传递给FLASH播放器的一个命令. "parameters:String"是传递给主机应用程序用于任何用途的一个字符串,或者传递给FLASH播放器的一个值。 如果要把消息发送给独立的播放器就需要使用到系统内置的六个命令和参数。这六个命令和参数在使用脚本助手添加fscommand命令时,可以进行选择 系统内置的六个命令和参数的具体说明如下: commandparameters说明 fullscreentrue或者false打开FLASH动画时是否进行全屏播放,true表示全屏播放 allowscaletrue或者false是否允许用户在缩放动画播放窗口的同时改变FLASH文件中的对象大小 showmenutrue或者false选择false就隐藏了"设置"和"关于FlashPlayer"以外的所有右键菜单 trapallkeystrue或者false设置为true就可以锁定所有的键盘输入,使所有的快捷键都无效 exec应用程序的路径在可播放FLASH文件的非FLASH播放器中调入并执行应用程序(.exe.com或者.bat) quit无关闭可播放FLASH文件的播放器窗口 关于以上命令的用法大家看下面的语句: fscommand("fullscreen","true");//打开FLASH文件自动进行全屏播放 fscommand("allowscale","true");//允许对FLASH文件中的对象进行缩放 fscommand("showmenu","false");//隐藏主要的FLASH右键菜单 fscommand("trapallkeys","true");//键盘的输入对FLASH播放器无效 fscommand("exec","C:\\WINDOWS\\system32\\calc.exe");//调用应用程序"计算器" fscommand("quit");//关闭FLASH播放器窗口 FLASH动画的发布 1、发布设置 2、输出视频文件 3、输出图像文件 一.loadMovie命令 1.loadMovie命令可以将外部的SWF动画或者图片文件加载到FLASH影片中。 loadMovie命令语法格式: loadMovie(url:String,target:Object/String,[method:String]):Void 此命令包含三个参数:urltargetmethod url:String要加载的swf文件或者图片文件所在的路径 target:Object/String对影片剪辑的引用或者目标影片剪辑路径的字符串。 method:String指定用于发送变量的HTTP方法,这个参数必须时字符串GET或者POST。如果没有要发送的变量,就省略这个参数。GET方法用于发送少量的变量,POST方法用于发送长字符串的变量。 2.使用loadMovie加载影片 我们可以使用loadMovie命令加载外部的SWF文件 loadMovie(“1.swf”,_root.mc) 3.使用loadMovie加载图片 loadMovie(“1.jpg”,_root.mc) 二.loadVariables命令 使用loadVariables命令可以从外部文件中读取数据,并设置影片剪辑中变量的值,比如设置影片剪辑中动态文本框的变量。外部文件可以是ASPJSPPHP等脚本生成的文件。 loadVariables(url:String,target:Object,[method:String]):Void url:String要加载变量所处位置的绝对路径或者相对的url target:Object指向接收所加载变量的影片剪辑的目标路径 loadVariables(“aa.txt”,_root.mc); 三.loadVariablesNum命令 使用loadVariablesNum命令可以从外部文件中读取数据,并且可以设置播放器的级别中的变量的值。 loadVariablesNum(url:String,level:Number,[method:String]):Void 其中level是一个整数,用来指定FLASH播放器接收这些变量的级别 vartu=["1.jpg","2.jpg","3.jpg","4.jpg"]; functionshow(){ _root.createEmptyMovieClip("pic",0); _root.pic.loadMovie(tu[i]); _root.pic._alpha=0; _root.pic._xscale=10; _root.pic._yscale=10; i%=4; _root.pic._alpha+=7; _root.pic._xscale+=5; _root.pic._yscale+=5; if(_root.pic._alpha>=100){ delete_root.onEnterFrame; onMouseDown=function(){ show(); 1.getDepth方法 getDepth方法可以返回影片剪辑实例的深度值 mc.getDepth(); mc是影片剪辑的实例名称,getDepth返回的是一个整数,表示影片剪辑所在的深度 2.getInstanceAtDepth方法 我们可以使用getInstanceAtDepth方法来返回指定深度上的影片剪辑实例。通过此来查看指定的深度是否已经被占用。 mc.getInstanceAtDepth(depth); mc是所要检查的范围,depth是整数,用来检查mc中指定深度级别。如果这个深度上没有影片剪辑实例。那么就返回undefined. 3.getNextHighestDepth方法 getNextHighestDepth方法可以返回下一个可用的最大深度值。 mc.getNextHighestDepth(); 返回的是一个整数。代表可用最大深度值。 4.影片剪辑深度的交换 如果要将一个影片剪辑移到另一个影片剪辑的前面或者后面,可用使用swapDepths方法来交换两个影片剪辑的深度。 mc.swapDepths(depth/target); mc指的是要与其他实例交换深度的实例名称,如果实例名称是depth,那么就表示mc和深度是depth上的实例交换深度。如果参数是target,表示mc与实例target交换深度 num=7;//加载图片的数量 a=275;//图片做椭圆形运动的X轴的中心 b=200;//图片做椭圆形运动的Y轴的中心 rx=190;//图片做椭圆形运动的X轴的半径 ry=50;//图片做椭圆形运动的Y轴的半径 n=0;//用来计算运动速度的角度值 angle=0;//用来计算运动速度的弧度值 speed=0;//计算图片响应鼠标运动的速度增量 for(i=1;i<=num;i++){//从库中将标识符为mc的元件附加到舞台 _root.attachMovie("mc","mc"+i,i); if(_xmouse>50&&_xmouse<500&&_ymouse>50&&_ymouse<350){ speed=(275-_xmouse)*.08; n+=speed; n=(n<360)n+1:1; for(i=1;i<=num;i++){ angle=(i*360/num+n)*Math.PI/180; _root["mc"+i]._x=a-rx*Math.cos(angle); _root["mc"+i]._y=b-ry*Math.sin(angle); _root["mc"+i]._xscale=10-100*Math.sin(angle); _root["mc"+i]._yscale=100-10*Math.sin(angle); if(_root["mc"+i]._y>200){ _root["mc"+i].swapDepths(100+i); _root["mc"+i].swapDepths(10-i); _root["mc"+i].gotoAndStop(i); 1.文本框的类型 2.动态文本框 3.输入文本框 影片剪辑的第一帧的脚本: textarea=textshow.substring(0,index)+"_"; index++; if(index>textshow.length) gotoAndPlay(Math.ceil(Math.random()*5)+5); 影片剪辑screen上的脚本: onClipEvent(load) { textshow=newString; textshow="请在下方区域输入文字"; index=1; 播放按钮上的: on(press) screen.textshow=textinput; screen.index=1; screen.gotoAndPlay(1); 2.粗体标签 3.斜体标签 4.换行标签 5.字体标签 colorfacesize 6.列表项标签 7.段落标签 alignclass 8.下划线标签 9.图像标签 srcidwidthheightalignhspacevspace mytxt.html=true; xin1.html=true; xin2.html=true; xin3.html=true; xin4.html=true; xin5.html=true; xin6.html=true; mytxt.htmlText=" xin1.htmlText=" xin2.htmlText=" xin3.htmlText=" xin4.htmlText=" xin5.htmlText=" xin6.htmlText=" mytxt.mypic._x+=8; mytxt.mypic._alpha-=5; if((mytxt.mypic._x)>=600){ mytxt.mypic._x=-340; if((mytxt.mypic._alpha)<=0){ mytxt.mypic._alpha=100; xin1.p1._alpha-=6; if((xin1.p1._alpha)<=0){ xin1.p1._alpha=100; xin2.p2._alpha-=4; if((xin2.p2._alpha)<=0){ xin2.p2._alpha=100; xin3.p3._alpha-=2; if((xin3.p3._alpha)<=0){ xin3.p3._alpha=100; xin4.p4._alpha-=6; if((xin4.p4._alpha)<=0){ xin4.p4._alpha=100; xin5.p5._alpha-=4; if((xin5.p5._alpha)<=0){ xin5.p5._alpha=100; xin6.p6._alpha-=2; if((xin6.p6._alpha)<=0){ xin6.p6._alpha=100; titletxt.html=true; titletxt.htmlText=" 三十、TextField类 1.TextField类的属性 text文本框中显示的文本 type文本框的类型,dynamic是动态文本框,input是输入文本框 autoSize控制文本字段的自动大小调整和对齐 background文本字段是否有背景填充 backgroundColor文本字段背景的颜色 border文本字段是否具有边框 borderColor文本字段边框的颜色 bottomScroll文本字段中当前可见的最后一行 hscroll文本框的当前水平滚动位置 html文本字段是否起用html格式 htmlText文本框包含的html形式的文本内容 length返回文本框的字符数 maxChars文本框最多可以容纳的字符数 multiline文本框是否显示多行文字 password文本框输入的内容是否用*表示 scroll返回文本框当前滚动位置 selectable文本框是否可以选择 _url在文本框中指定url链接 wordWrap指定文本框是否换行 restrict用户输入到文本字段中的字符集 2.TextField类的方法 TextField.addListener()注册一个对象 TextField.getFontList()以数组的形式返回播放器的主机系统上的字体名称 TextField.getDepth()返回文本框的深度 TextField.getNewTextFormat()获取分配给新插入文本的默认文本格式 TextField.getTextFormat()返回一个字符或整个文本框的文本格式 TextField.reMoveListener()删除侦听器对象 TextField.reMoveTextField()删除使用MovieClip.createTextField()创建的文本框 TextField.replaceSel()替换当前所选的内容 TextField.setNewTextFormat()设置文本格式 TextField.setTextFormat()为文本框中指定的文本设置格式 TextField.replaceText()替换文本框中指定的文本 mc.createTexeField(instanceName,depth,x,y,width,height); varcount=0; count++; count%=5; if(count==0){ _root.createTextField("txt"+i,i,25+500*Math.random(),0,12,12); with(_root["txt"+i]){ text=String.fromCharCode(Math.floor(26*Math.random())+65); autoSize="center"; type="dynamic"; textColor=0x0000FF; border=true; borderColor=0x999999; background=true; backgroundColor=0xDDDDDD; for(varjin_root){ _root[j]._y+=5; if(_root[j]._y>400){ _root[j].removeTextField(); _root.onKeyDown=function(){ if(_root[j].text==String.fromCharCode(Key.getCode())){