|
沙发
楼主 |
发表于 2012-3-15 11:20:50
|
只看该作者
二:布置主场景
1.首先将默认图层layer1重命名为background,使用矩形工具绘制一个和舞台一样大小的矩形,并填充上天蓝色,将图层延续到第50祯。
2.新建两个图层分别为start和gun,在start图层上用来设置游戏的开始界面,使用文本工具输入游戏的名称,并将瞄准器放置到图层gun 中,并在属性面板中设置瞄准器的Instance name为pointer,如图11所示:
图11
3.在图层gun的第22祯插入关键祯,输入游戏时间已到的消息,如图12所示;
图12
4.新建一个图层命名为score&time,用来放置记分器和记时器,将记时器mTime放到舞台下面靠右的位置,然后在下面靠左的位置绘制一个动态文本框,设置其变量名为score,用来记录游戏的得分,如图13所示:
图13
三:给游戏添加Action动作脚本
最后的游戏就是添加Action动作脚本了。
新建一个图层,命名为ACTION,设置第2祯的祯标签为start, 设置第9祯的祯标签为dup, 设置第15祯的祯标签为gotoDup, 设置第22祯的祯标签为reStart.
在第一祯添加如下AS:
Mouse.hide();
startDrag("/pointer", true);
//游戏开始前,首先隐藏鼠标,然后使瞄准器变为可拖动状态
sShoot = new Sound();
sShoot.attachSound("sShoot");
//新建一个sound声音对象,然后从外部导入射击的音效Sshoot,使用attachsound方//法将此声音绑定
sExp = new Sound();
sExp.attachSound("sExp");
////新建一个sound声音对象,然后从外部导入射击的音效Sexp,使用attachsound方//法将此声音绑定
stop();
在第2祯添加如下AS:
score = 0;
//设置初始得分为0
playTime = 100;
//设置游戏时间为100秒
var expX;
var expY;
//定义两变量,代表飞机的坐标
cDepth = 100;
pDepth = 0;
numPlane = 0;
numCloud = 0;
//定义变量,分别代表飞机和云的深度和数量
_root.attachMovie("mP", "pointer", 300);
startDrag("/pointer", true);
在第9祯添加如下AS:
if (Math.random()<0.2 && numCloud<5) {
numCloud++;
_root.attachMovie("mCloud", "c"+cDepth, cDepth);
cDepth = (++cDepth)%100+100;
}
//复制白云
if (Math.random()<0.3 && numPlane<7) {
_root.attachMovie("mPlane"+(1+random(3)), ""+pDepth, pDepth);
numPlane++;
with (eval("/p"+pDepth)) {
_x = -20-random(120);
_y = 150+random(60);
}
pDepth = (++pDepth)%100;
}
//复制飞机,并使用随机函数设置飞机出现的坐标
在第15祯添加如下AS:
gotoAndPlay("Dup");
//返回到祯Dup复制飞机
在第22祯添加如下AS:
_root.pointer.removeMovieClip();
//游戏结束后,从游戏中删除瞄准器
在第50祯添加如下AS:
Mouse.show();
//显示鼠标
for (i=0; i<100; i++) {
removeMovieClip ("/c"+(100+i));
removeMovieClip ("/p"+i);
}
stop ();
//删除游戏中所有复制出来的飞机和白云
最后的时间线如图14所示:
图14
到这里,一款精彩的空战射击游戏就制作完成了,您可以按照相似的制作方法,制作一款比较传统的纵版射击游戏。此实例其实是设计空战类射击游戏的通用思路,其它飞行射击游戏其实是在此基础上扩展成的,所以还可以进一步丰富游戏的功能,加强游戏的可玩性。 |
|