步骤3 定义动作脚本
选中“可见”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._visible=1;//设置蝴蝶实例为可见,也可以写成:x1._visible=true
}
选中“不可见”按扭, 在【动作】面板定义它的动作脚本为:
on (press) {
x1._visible=0;//设置蝴蝶实例为不可见,也可以写成:x1._visible=false
}
选中“_alpha-10”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._alpha-=10;//每按一下按扭,_alpha的值减少10%,当于_alpha=_alpha-10
}
选中“_alpha+10”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._alpha+=10//每按一下按扭,_alpha的值增加10%,相当于_alpha=_alpha+10
}
选中“_rototion-30”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._rotation-=30;//每按一下按扭,蝴蝶实例反向旋转30度
}
选中“_rototion+30”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._rotation+=30;//每按一下按扭,蝴蝶实例正向旋转30度
}
选中“蝴蝶坐标”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x=int(getProperty(x1,_x));//取得蝴蝶的横坐标,并取整数后用变量x表示
y=int(getProperty(x1,_y));//取得蝴蝶的纵标标,并取整数后用变量y表示
zb="("+x+","+y+")";//把横、纵坐标用动态文本表示出来
}
选中“蝴蝶高宽”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
h=int(getProperty(x1,_height));//取得蝴蝶纵向的高,并取整后用变量h表示
w=int(getProperty(x1,_width));//取得蝴蝶横向的宽,并取整后用变量w表示
hw="("+h+","+w+")";//用动态文本显示高、宽
}
选中“_x+15”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._x+=15;//每按一次,蝴蝶横坐标增加15个象素数,向右移动
}
选中“_x-15”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._x-=15;//每按一次,蝴蝶横坐标减少15个象素数,向左移动
}
选中“_y+15”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._y+=15;//每按一次,蝴蝶纵坐标增加15个象素数,向下移动
}
选中“_y-15”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._y-=15;//每按一次,蝴蝶纵坐标减少15个象素数,向上移动
}
选中“_xscale+20”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._xscale+=20;//每按一次,蝴蝶横向放大20%
}
选中“_xscale-20”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._xscale-=20;//每按一次,蝴蝶横向缩小20%
}
选中“_yscale+20”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._yscale+=20;//每按一次,蝴蝶纵向放大20%
}
选中“_yscale-20”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._yscale-=20;//每按一次,蝴蝶纵向缩小20%
}
选中“复原”按扭,在【动作】面板定义它的动作脚本为:
on (press) {
x1._x=272.8;// 使蝴蝶恢复到原来的坐标
x1._y=124.8;
x1._rotation=0;//下面恢复蝴蝶旋转角度、透明度、放大系数为初始值
x1._alpha=100;
x1._xscale=100;
x1._yscale=100;
zb="";//恢复显示蝴蝶坐标和高宽的动态文本变量为空字符
hw="";
}
这段程序代码实现蝴蝶还原到初始状态。这里要提醒你注意的是,这段代码前两行语句使蝴蝶恢复到原来的坐标,这个坐标,需要在第一次运行时,由下面两个式子来取得。
xx=getProperty(this. hudie,_x);
yy=getProperty(this. hudie,_y);
上一页 [1] [2] [3] [4] [5] 下一页
第七章 动作脚本进阶
第一节 MovieClip(电影剪辑)控制(4)
2.复制电影剪辑命令
你一定见过Flash动画中倾盆大雨、满天雪花、繁星点点等特效吧!这些特效就是利用
duplicateMovieClip()命令的神奇功能来实现的!duplicateMovieClip()命令的一般使用形式为:
duplicateMovieClip(目标,新名称,深度);
其中有三个参数:
target(目标):要复制的电影剪辑的名称和路径。
newname(新名称):是复制后的电影前辑实例名称。
depth(深度):已经复制电影剪辑的堆叠顺序编号。每个复制的电影剪辑都必须设置唯一的深度,否则后来复制的电影剪辑将替换以前的复制的电影剪辑,新复制的电影剪辑总是在原电影剪辑的上方。
在使用时,需要注意以下几点:
u 复制的影片会保持父级影片原来的所有属性,所以,原来的影片是静止的,复制后的影片也静止,并且一个叠放在另一个上,如果你不给它们设置不同坐标,你就只能看到编号最大的复制影片,也就看不出是否复制出的效果了。
u 原来的影片在做补间运动,那么复制品也要做同样的运动。并且无论播放头在原始影片剪辑(或“父”级)中处于什么位置,复制的影片播放头始终从第一帧开始。所以,复制品和原影片始终有个时间差,因此,即使你不给复制的影片设置坐标,你也可以看到复制品在运动。
u 复制影片经常要与影片属性控制(特别是_x,_y,_alpha,_rotation,_xscale,_yscale等属性)结合才能更好地发挥复制效果。
u 复制影片还经常都要和循环语句配合,才能复制多个影片剪辑。
有时候,你需要删除复制好的影片,那就用removeMovieClip()命令,一般形式为:
removeMovieClip(影片剪辑实例名);
这个命令只有一个参数,那就是复制后的影片剪辑实例名称。
例如:
for(I=1;I<10;I++){ //变量I从1开始,到9为止,变量每次加1
duplicateMovieClip(”_root.a”,”a”+I,I);
}
上面这段程序代码对一个名字为a的影片剪辑实例进行复制,复制后的实例名称为a1,a2,…a9,深度分别为1,2,…9。
那么,在删除这些复制的影片剪辑实例时,你可以用下面的循环语句:
for(I=1;I<10;I++){
removeMovieClip(”a”+i);
}
有关这个复制影片剪辑命令的详细应用请参看本章第四节的前两个实例。
3.影片剪辑的路径
在前面,我们不止一次谈到MC的路径,那么什么叫路径,怎么运用路径呢?
我们知道,在Flash的场景中有个主时间轴,在场景里可以放置多个MC,每个MC又有它自己的时间轴,每个MC又可以有多个子MC……,就像在我们国家(场境)下有很多个省(MC),每个省下又有许多个市(子MC)……。这样,在一个Flash的影片中,就会出现层层叠叠的MC,如果你要对其中一个MC进行操作,你就说出MC的位置,也就是要说明MC的路径。
路径分绝对路径和相对路径,下面我们还是用一个实际例子来进行说明。
假设在场境里有两个MC,一个MC的实例名为mx,在mx下有个子MC名为mx1,在mx1的下面还有一个孙MC名为mx2。
另一个MC的实例名为dm,在dm下有个子MC名为dm1,在dm1下还有个孙MC名为dm2。
(1)绝对路径
不论在那个MC中进行操作,都是从主场景时间轴(用_root表示)出发,到MC,再到MC的子级MC,再到MC的孙级MC…,一层一层地往下寻找。例如下面的操作:
对mx2使用play()的命令操作,应使用以下这样的程序代码:
_root.mx.mx1.mx2.play();
对dm1使用play()的命令操作,应使用以下这样的程序代码:
_root.dm.dm1.play();
对mx使用play()的命令操作,应使用以下这样的程序代码:
_root.mx.play();
(2)相对路径
在一个MC内的父、子、孙关系中,有时候用相对路径比较简单,但是,用相对路径时,你必须清楚你在哪一级的MC中,你在对哪一级的MC进行操作。我们以上面的mx为例,使用的仍然是play()命令。
在mx1中,对它本身进行操作的程序代码为:
this.play();
对mx进行操作,因为mx是它的上一级(父级),所以程序代码为:
_parent.play();
对mx2的操作,因为mx2是它的子级,所以程序代码为:
this.mx2.play();或者mx2.play();
如果在mx2中对mx用相对路径操作就比较麻烦了,程序代码为:
_parent._parent.play(),因为mx是mx2的父级的父级呀。
如果用相对路径在mx中或者mx内的MC,对另一个dm内的MC进行操作,就十分麻烦了,我们不推荐这种方法。
从上面的例子中,我们知道,绝对路径比较好理解,并且用绝对路径可以不必考虑你是在哪级的MC中进行操作的。直接从主场景时间轴(_root)出发,一层一层的往下找,如果你对路径的理解不透,建议你就用绝对路径。用相对路径就必须清楚操作命令是在哪一级MC写的,是在对哪一级的MC进行操作,比较熟练后,在一个MC内用相对路径有时候比较简单。
上一页 [1] [2] [3] [4] [5] 下一页
第七章 动作脚本进阶
第一节 MovieClip(电影剪辑)控制(5)
(3)插入路径
在对电影剪辑MC进行编程操作时,你还可以使用【插入目标路径】对话框来对MC的路径进行设置。在【动作】面板中,单击【插入目标路径】按钮,如图7-1-3所示,就可以打开【插入目标路径】对话框,如图7-1-4所示。

图7-1-3 单击【插入目标路径】按钮,

图7-1-4 【插入目标路径】对话框
如图7-1-4所示是在对MC设置行为时经常会用到的对话框。在其中,你可以看到经过你注册的MC实例,你需要对哪个MC进行设置,你就可以单击这个MC,然后,选择下面的【相关】(相对路径)或者【绝对】(绝对路径)单选按钮,最后单击【确定】,那么这个MC的实例名和路径就会进入你编辑的脚本中了。
另外,需要说明的是,对数据或者变量的某些操作,也需要路径的相关知识,也可以仿照对MC的操作。不过就不能用【插入目标路径】对话框了。
例如,前面的两个MC中,我们想把mx1中的一个数据k,在dm1中得到,那么,我们可以在dm1中用绝对路径来设置:
I=_root.mx.mx1.k;
4.拖曳影片剪辑命令
你一定见过,在Flash动画中,你的鼠标突然变成一个美丽的动物图画,或者你可以任意搬动动画中的物体,Flash动画是怎么实现的呢?那就得用上两个成对出现的命令:“startDrag()”拖拽影片和“
stopDrag()”停止拖拽影片。如果你要做课件,这两个命令可是不能少的了。
startDrag()命令的一般形式为:
myMovieClip.startDrag(lock, left, top, right, bottom);
myMovieClip是要拖动影片的名字,lock表示影片拖动时是否中心锁定在鼠标,值有true或false,true表示锁定,false表示不锁定。
left,top,right,bottom这四个参数分别设置影片拖动的左,上,右,下的范围,注意是相对于影片剪辑父级坐标的值,这些值指定该影片剪辑被约束的矩形。这些参数是可选的。
如果是myMovieClip.startDrag(),则是可以在整个屏幕范围内任意拖动。
stopDrag()命令可以实现停止拖拽影片命令,这个命令没有参数。
注意:如果你要拖动某一个影片,一般情况下,你应当在这个影片内加一个按扭,再把上面的命令附加在这个按扭上。
例如:在场景中有一个影片,实例名为mc,坐标为(250,200),你想让它以(250,200)为中心,高为200,宽为300的矩形范围内被拖动,就应当在mc内放一个按扭,然后在按扭上加上下面的程序代码:
on (press) {
_root.mc.startDrag(true,100,100,400,300);//这里的坐标是指的场景内的坐标。
}
on (release) {
stopDrag();//停止拖动这个影片。
}
有关startDrag命令的应用请你参看本章第四节的第1个实例。