html弹力球游戏源码,Flash游戏制作:弹力球

二、游戏action控制代码的添加

1.为了方便我们对游戏进行修改和调试,我们一般都需要把大部分的控制代码专门放到一个独立的mc中,这也是一个制作的好习惯。

2.选取insertànew symbol菜单命令,在弹出的create new symbol面板中设置组件类型为movie clip,并给组件取名为Paddle Controller。

3.在组件Paddle Controller的编辑状态下,我们新建两个图层layer2和layer3,连上组件莫认的layere1,一共有三个独立的图层。

4.在图层layer2上,我们使用文本工具在编辑区中画两个大小适中的文本框,如图9所示:

1dcf5991aceec16dceaebda98e59094b.png

图9

5. 在properties面板中分别设置这两个文本框为dynamic text类型,即动态文本框,左边的文本框我们用来显示得分,右边的文本框我们用来显示剩余的生命,所以分别在properties面板中设置它们的变量名var为score和lives,如图10和图11所示:

ec65eada6e2c5e0efddf0db4e750c89c.png

图10

5daa08bec1ab66f0bb9abcfadda09b15.png

图11

6.然后将图层layer2延续到第22帧。

7.在图层layer3上输入文本GET READY,作为游戏开始的提示信息,并将此帧延续到第18帧,如图12所示:

bb71d6e8b8144800a5b2329068fff1ca.png

图12

8.在图层layer3的第19,20,21三帧分别插入三个空白关键帧,然后在第22帧插入关键帧,从图库中将前面做好的重玩按钮放到编辑区中,如图13所示:

511b2fd6c2f81edd7b0c793e18d03f3f.png

图13

9.并给重玩按钮添加as:

on (release) {

Score = 0;

Lives = 5;

gotoAndPlay(1);

}

//初始化游戏得分和生命值,并且跳到第一帧重新开始游戏

10.回到图层layer1,在第1帧,第20帧和第21帧插入三个关键帧,给第1帧添加如下as:

xStep = Number(random(5))+6;

yStep = Number(random(5))+3;

//设置两个随机变量,其中xStep的范围是6-11,yStep的范围是3-8,random(N)这个随//机函数会产生一个从0到N的随机数

xModifier = random(10);

yModifier = random(10);

//设置两也随机变量,范围都是从0到10

if (Number(xModifier)>5) {

xStep = xStep-(xStep*2);

}

if (Number(yModifier)>5) {

yStep = yStep-(yStep*2);

}

//根据xModifier和yModifier这两个随机树取值的不同,对xStep和ystep两变量值//进行修改

if (Number(lives) == 0) {

gotoAndStop(22);

}

//如果lives值等于0,即生命值为0,则游戏结束,跳到第22帧也就是游戏结束画面

11. 第20帧添加如下as

horX = getProperty("/mousetrack", _x);

setProperty("/hor", _x, eval("horX"));

//取得对象mousetrack的横坐标,并赋给水平挡板hor,这样就控制了水平挡板和鼠标//的横坐标始终相等,使它们保持在一条垂直线上

vertY = getProperty("/mousetrack", _y);

if (Number(vertY)<245) {

setProperty("/vert", _y, eval("vertY"));

} else {

setProperty("/vert", _y, 245);

}

//设置垂直挡板的位置,并且规定了挡板的最大纵坐标值为245

BallX = getProperty("/Ball", _x);

setProperty("/Ball", _x, Number(BallX)+Number(int(xStep)));

BallY = getProperty("/Ball", _y);

setProperty("/Ball", _y, Number(BallY)+Number(int(yStep)));

//设置弹力小球的坐标值,经过一系列计算后,产生了一个随机的坐标值

12. 第21帧添加如下as

Lose = 0;

LeftConstraint = getProperty("/hor", _x)-47;

RightConstraint = Number(LeftConstraint)+94;

UpperConstraint = getProperty("/vert", _y)-47;

LowerConstraint = Number(UpperConstraint)+94;

yAccel = vertY-getProperty("/mousetrack", _y);

xAccel = horX-getProperty("/mousetrack", _x);

//定义一系列变量,LeftConstraint,RightConstraint,UpperConstraint,LowerConstraint

//设置了小球所能活动的范围

if (Number(getProperty("/Ball", _y))>270 or Number(getProperty("/Ball", _y))<30) {

if ((Number(getProperty("/Ball",_x))>Number(LeftConstraint)) and (Number(getProperty("/Ball", _x)){

yStep = yStep-(yStep*2);

xStep = int(xStep-(0.15*xAccel));

Score = Number(Score)+50;

} else {

Lose = 1;

}

}

//此段程序判断小球是否碰到了水平挡板上,如果碰到了,则分数加50,然后设置小//球的反弹坐标,否则,标志位lose记为1,说明碰到了墙壁

if (Number(getProperty("/Ball", _x))>270 or Number(getProperty("/Ball", _x))<30) {

if ((Number(getProperty("/Ball",_y))>Number(UpperConstraint)) and (Number(getProperty("/Ball", _y)){

xStep = xStep-(xStep*2);

yStep = int(yStep-(0.15*yAccel));

Score = Number(Score)+50;

} else {

Lose = 1;

}

}

//此段程序判断小球是否碰到了垂直挡板上, 如果碰到了,则分数加50,然后设置小//球的反弹坐标,否则,标志位lose记为1,说明碰到了墙壁。

if (Number(Lose) == 0) {

gotoAndPlay(20);

} else {

setProperty("/Ball", _x, 150);

setProperty("/Ball", _y, 150);

Lives = Lives-1;

Score = Score-500;

gotoAndPlay(1);

}

//若没有让小球触到墙壁,即lose的值为0,则回到第20帧,继续游戏,如果小球触到了墙壁,则重新设置小球的位置,并且分数减去500,生命值扣掉1,回到第一帧开始游戏

13.最后的时间线如图14所示,到这里,本游戏中最关键的action就添加完了,下面我就可以开始布置主场景了。

8ddb9960070154ecb123aab6555d76a3.png

图14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值