万卷书   首页 > 电脑书籍 > Flash > Flash 5 Action 制作碰撞的小球
 

碰撞的小球(2)

全部弄好之后,跟我来逐个设定action脚本:

先从symbol里面下手, mc(speed) 3个帧,

第一帧 : stop();

第二帧:newx = getProperty ("../ball", _x);

//取得scene1当中的mc(ball)的横坐标的值赋给newx

/:speed = ((newx-oldx)*0.2);

//速度=(新的-旧的)* 0.2

oldx = newx;

//新的-〉旧的

第三帧:gotoandplay(2);

mc(shadow(ops)) 2个帧:

第一帧:setProperty ("/shadow", _x, getProperty ("/ball", _x));

//设定mc(shadow) 的横坐标,数值等于 mc(ball)的横坐标,因为影子是跟着小球走的哦,当然是一样的了

setProperty ("/shadow", _alpha, getProperty ("/ball", _y)/4-40);

//设定mc(shadow) 的透明度,数值等于 mc(ball)的纵坐标/4 -40

setProperty ("/shadow", _xscale, getProperty ("/ball", _y)/4-20);

//设定mc(shadow) 的横缩放,数值等于 mc(ball)的纵坐标/4 -20

setProperty ("/shadow", _yscale, getProperty ("/ball", _y)/16);

//设定mc(shadow) 的纵缩放,数值等于 mc(ball)的纵坐标/16

第二帧:gotoandplay(1);

mc(xspeed) 2个帧:

第一帧:

speed = (((/:speed*100)-/:speed/10)/100);

//数学公式

if (speed eq speed2) {

//如果speed==speed2

setProperty ("/ball", _x, getProperty ("/ball", _x)+(speed*4.5));

//设定 ball 的横坐标 数值是它的横坐标+speed*4.5

} else if ((speed>-0.09) and (speed<0)) {

//如果speed>=-0.09 并且小于0的话

speed=0; speed==0

} else {

setProperty ("/ball", _x, getProperty ("/ball", _x)+(speed*4.95));

//设定 ball 的横坐标 数值是它的横坐标+speed*4.95

if ((getProperty ("/ball", _x)>532) or (getProperty ("/ball", _x)<19)) {

//如果ball的横坐标>532 或者小于19的话

setProperty ("/ball", _x, getProperty ("/ball", _x)+(speed-(speed+speed)*4.95));

//设定 ball 的横坐标 数值是它的横坐标+(speed-(speed+speed)*4.95))

}

}

speed2= (((/:speed*100)-/:speed/10)/100); speed2=(100*speed-speed/10)/100

第二帧: go to and play(1)

好了,下面可以回到scene1 来, 开始主场景当中的action 脚本的设置了:

你一定从图中看到了, 主场景当中 有6个keyframe ,现在从头开始设置

第一帧:

height = int(getProperty (ball, _y));

//定义height 高度 数值是 ball 的纵坐标

n = "";

//定义n = 空的变量

第二帧:

n = int((n+1)*1.1);

//把(n+1) 乘以1.1 之后赋值给n

setProperty ("ball", _y, int(n+getProperty (ball, _y)));

//设定 ball 的 y坐标 数值是 n+它原来的坐标

if (n+getProperty (ball, _y)>400) {

//如果原来的坐标已经大于400,则已经碰到了墙壁,所以 gotoandplay(4)

gotoAndPlay (4);

}

第三帧:gotoAndPlay (2); 不断回到第二帧

第四帧:

if (n+getProperty (ball, _y)>400) {

//如果 原来小球的坐标大于400,就是说超出了墙壁

setProperty ("ball", _y, "400");

//则设定它的坐标为400

}

第五帧:

yb = int(getProperty (ball, _y));

// 把小球的纵坐标赋值给yb

rebound = int (height+((400-height)/3));

//rebound变量数值 是小球的高度+(400-高度)/3

setProperty ("ball", _y, int (yb-(yb-(rebound))/5));

//设定弹回的坐标

if (yb eq rebound) {

//如果小球的纵坐标等于弹回的坐标

gotoAndPlay (1);

//回到第一帧

}

if (n eq 2) {

//如果n==2

stop ();

//停止

}

第六帧:gotoAndPlay (5); 不断回到第五帧

就这样,所有的脚本已经设定完成了,可以看看效果了,这个 例子有些符号是flash4里面的 比如 "eq" 请 注意 在flash5 当中已经不提倡这种写法了, 要改成"==" ,但是这里按照源文件作者的样子写, 以便尊重作者,请读者自己注意一下子。最后的layer,如图4

图4

好了,这次就说到这里吧,注意对照源文件哦,下次再见!

上一页