演示效果:
点击这里下载源文件
枪战游戏主要应用的代码
1.鼠标跟随 startDrag(this, true);用来做标准器
2.层级别的控制 swapDepths();
3.碰撞检测 hitTest(_root.gun.hit)
4.动态加载敌人: _root.attachMovie();
5.动态文本框制作 显示分数
制作流程:
1.准备一个瞄准器MC,内含开火的动画
2.敌人MC一个,内含敌人中弹动画,在库中将敌人MC连接ID命名为“man"
3.动态文本框 编写代码: 首先主时间轴第一帧AS:
// ------主时间轴代码----------------
// 将鼠标隐藏
Mouse.hide();
// 初始设置分数为0
scores = 0; 此变量必须和分数文本框的变量名对应
// 封装代码,建立新的函数"copyman"
function copyman() {
// 复制库中ID为“man"的MC到主场景,命名为“man”+_root.i,层级别为_root.i
// 注意:_root.i没有设置初始值,所以默认为无。
// _root.i++,就是_root.i+1
_root.attachMovie("man", "man"+_root.i, _root.i++);
// 设置新MC的位置
// 将复制出来的新MC放到x轴为0-550之间,y轴为0-400的随机坐标上
_root["man"+_root.i]._x = random(550);
_root["man"+_root.i]._y = random(400);
}
// 执行新函数
copyman();
然后将瞄准器MC拖到舞台实例名为“gun”在其MC上写AS: // ----------准星MC的代码--------------
onClipEvent (enterFrame) {
// 实现鼠标跟随,并且所定鼠标到此MC的注册点
startDrag(this, true);
}
onClipEvent (mouseDown) {
// 当鼠标按下的时候运行到此MC第3帧(开火动画)执行
gotoAndPlay(3);
}
onClipEvent (load) {
// 设置次准星层级别为9999,数字越大层级越高,以免准星被敌人覆盖
this.swapDepths(9999);
} 此MC内部有个开火的动画在开火动画这一段加上一隐形MC,实例名为“hit”
制作敌人MC内部
敌人MC内部,第一帧为没有中弹时候的画面,在这帧再加入一隐形MC,加AS: // 碰撞检测
onClipEvent (enterFrame) {
// 如果如果检测到于准星MC里的hit发生接触就在上一级跳转到第5帧(被毖了)执行.
if (hitTest(_root.gun.hit)) {
_parent.gotoAndPlay(5);
}
}
5帧以后为中弹后死亡的动画,在最后一帧加AS: // 分数加100
_root.scores += 100;
//运行copyman的函数 复制敌人
_root.copyman();
// 删除此MC
removeMovieClip(this);