下面我们在图层action中设置相应的action,以便对动画片进行控制,首先在第一桢设置如下as:
if (number(/:flametop) == 1) {
//如果mc名字为1
gotoandplay("a");
//跳转到祯a
} else if (number(/:flametop) == 2) {
//如果mc名字为2
gotoandplay("b");
//跳转到祯b
} else if (number(/:flametop) == 3) {
//如果mc名字为3
gotoandplay("c");
//跳转到祯c
} else if (number(/:flametop) == 4) {
//如果mc名字为4
gotoandplay("d");
//跳转到祯d
} else if (number(/:flametop) == 5) {
//如果mc名字为5
gotoandplay("e");
//跳转到祯e
}
分别在第10桢,第20祯,第30祯,第40祯,第50祯设置如下as:
telltarget ("flamebottom") {
gotoandstop(/:flamebottom);
}
分别在第19桢,第29祯,第39祯,第49祯,第60祯设置as为stop():
下面新建一个button 组件drag_button,在组件的hit桢插入一个关键桢,并画一个正方形,其它祯不放任何对象,我们把组件drag_button用做隐形按钮,如图14所示:
图14
接着新建mc命名为drag_mc,将组件drag_button拖到编辑区中,然后在插入两个关键桢,再第一关键祯中加as: looper = 1;// 设置变量并赋初值为1
在第二个关键桢中加as:
oldx = newx;
oldy = newy;
//定义两个表示左边的变量
newx = getproperty("", _x);
//取得对象的x坐标值
newy = getproperty("", _y);
//取得对象的y坐标值
xspeed = oldx-newx;
//给变量赋值为新旧x 坐标的差
yspeed = oldy-newy;
//给变量赋值为新旧y 坐标的差
if (number(xspeed)<0) {
//如果火焰摆动到最左方
xspeed = xspeed*-1;
//开始向右摆动
}
if (number(yspeed)<0) {
//如果火焰摆动到最上方
yspeed = yspeed*-1;
//开始向下摆动
}
/:totspeed = number(xspeed)+number(yspeed);
if (number(/:totspeed)<10) {
/:totspeed = 10;
//设置最小速度为10
} else if (number(/:totspeed)>20) {
/:totspeed = 20;
//设置最大速度为20
}
第三个关键祯中加as:
if (number(looper)<1000) {
//如果循环次数不到1000的话
duplicatemovieclip("/smoke_0", "smoke_" add looper, looper);
//不断的复制smoke_0对象
setproperty("/smoke_" add looper, _x, getproperty("", _x));
//设置复制出的smoke_0对象的x坐标
setproperty("/smoke_" add looper, _y, getproperty("", _y));
//设置复制出的smoke_0对象的x坐标
set("/smoke_" add looper:mydepth, looper);
//设置复制出的smoke_0对象的深度
looper = number(looper)+1;
//循环次数加一
} else {
looper = 1;
}
gotoandplay(2);
//循环结束后跳转到第2祯
最后我们需要建立一个空的mc命名为smoke_0,里面不放置任何对象,只写一些控制用的as,设立三个关键桢,第一个关键祯加as:
orgy = getproperty("", _y);
//取的对象的y坐标
myxstep = /:windspeed/(number(-1)+number(random(3)));
myystep = -10-random(/:smoothness);
myscalestep = 100;
//分别给三个变量赋值
第二关键祯加如下as:
setproperty("", _x, number(getproperty("", _x))+number(myxstep));
//设置对象的x坐标
setproperty("", _y, number(getproperty("", _y))+number(myystep));
//设置对象的y坐标
setproperty("", _alpha, myscalestep);
//设置对象的透明度
myscalestep = myscalestep-/:totspeed;
if (number(myscalestep)<0) {
removemovieclip("");
}
第三个关键祯加as: gotoandplay(2);
最后回到主场景中,将组件flame_graphic和组件smoke_0放置到主场景的合适位置,如图15所式:
图15
这样,一个可以随意控制的火焰效果就做好了,虽然其中用到了许多as, 但是都是一些基本as的结合应用,只要你开阔自己的思路,用简单的as也能做出非常漂亮的效果的。
点击:下载源代码
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器