碰撞的小球(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
好了,这次就说到这里吧,注意对照源文件哦,下次再见!
|