游戏中的人物走动的完全控制 |
| 作者:佚名 来源:闪吧 作者: oonnee 更新:2007-1-13 20:43:33 错误报告 我要投稿 |
[全屏欣赏]
多谢。先找个游戏截图下来做成MC,在用Key.isDown和Key.getCode() 判断,因为为了游戏的连贯性、触发的动作比较多了,例如先按左、在按上 和按上再按左是不一样的,所以写的时候要留意点,不要到写一半的时候 才发现连贯性有问题的~~~ 看下代码就知道有那些触发的条件了。 -----------------------------------------------------
onClipEvent (load) { var speed = new Array(0, 6, 9, 8); _root.go = ""; _root.fire = ""; playerx = this._x; playery = this._y; _root.yx = 1; _root.b = true; _root.l = 65; _root.u = 87; _root.r = 68; _root.d = 83; _root.a = 78; _root.j = 77; _root.x = 1; _root.z = 1; scale = 1; // 定义炮弹的初始值 _root.f=1//多少发子弹; _root.zd_x=0 //0-left 1-right; _root.zd_y=1 //0-no 1-up -1-down; function zd() { if (_root.f<10) { _root.attachMovie("paodan","paodan"+_root.f); _root.f++; } } } onClipEvent (enterFrame) { if (_root.b == true) { with (_root.player) { // 按下左键 if (Key.isDown(_root.l) && !(Key.isDown(_root.d))) { scale = 0; _x -= speed[1]; gotoAndStop(2); // -------------------------------------------- } // 按下右键 if (Key.isDown(_root.r) && !(Key.isDown(_root.d))) { scale = 1; _x += speed[1]; gotoAndStop(2); } // 按上 if ((Key.isDown(_root.u) && !Key.isDown(_root.r)) || (Key.isDown(_root.u) && !Key.isDown(_root.l))) { _x += speed[0]; gotoAndStop(4); } // 按下 if (Key.isDown(_root.d)) { _root.fire = 2; _x += speed[0]; gotoAndStop(5); } // 按a // a if (Key.isDown(_root.a) && !(Key.isDown(_root.l)) && !(Key.isDown(_root.r)) && !(Key.isDown(_root.d)) && !(Key.isDown(_root.u)) && !(Key.isDown(_root.j))) { if (_root.z == 1) { _root.go = 9; zd(); } // a+l a+r } else if ((Key.isDown(_root.a) && Key.isDown(_root.l)) || (Key.isDown(_root.a) && Key.isDown(_root.r))) { if (_root.z == 1) { _root.go = 9; _root.b = false; } // a+d } else if (Key.isDown(_root.a) && Key.isDown(_root.d) && !(Key.isDown(_root.r)) && !(Key.isDown(_root.l))) { if (_root.z == 1) { _root.go = 12; _root.b = false; } } else if (Key.isDown(_root.a) && Key.isDown(_root.d) && Key.isDown(_root.l)) { gotoAndStop(5); // a+u } else if (Key.isDown(_root.a) && Key.isDown(_root.u) && !(Key.isDown(_root.r)) && !(Key.isDown(_root.l))) { if (_root.z == 1) { _root.go = 8; _root.b = false; } } else if (Key.isDown(_root.a) && Key.isDown(_root.u) && (Key.isDown(_root.l))) { gotoAndStop(8); } else { _root.go = ""; _root.b = true; _root.z = 1; } // 按J的时候 // 单独按J的时候 if (Key.isDown(_root.j) && !Key.isDown(_root.u) && !(Key.isDown(_root.l)) && !(Key.isDown(_root.r)) && !(Key.isDown(_root.d)) && !(Key.isDown(_root.a))) { if (_root.z == 1) { _root.go = 7; _root.b = false; } // 按J的时候+L } else if (Key.isDown(_root.j) && (Key.isDown(_root.l))) { if (_root.z == 1) { _root.go = 7; _root.b = false; } // 按J的时候+R } else if (Key.isDown(_root.j) && (Key.isDown(_root.r))) { if (_root.z == 1) { _root.go = 7; _root.b = false; } // 按J的时候+U } else if (Key.isDown(_root.j) && (Key.isDown(_root.u))) { if (_root.z == 1) { _root.go = 10; _root.b = false; } // 按J的时候+d -----------------滚动 } else if (Key.isDown(_root.j) && (Key.isDown(_root.d))) { if (_root.z == 1) { _root.go = 6; _root.b = false; } // 按J的时候+a -----------------跳发子弹 } // 判断所有的按钮~!!!!!!! if ((Key.isDown(_root.d) && Key.isDown(_root.u)) || (Key.isDown(_root.l) && Key.isDown(_root.r))) { gotoAndStop(1); } // 判断左的按钮~!!!!!!! if ((Key.isDown(_root.l)) && (Key.isDown(_root.d)) && Key.getCode() == _root.d) { _root.fire = 2; speed[1] = 0; gotoAndStop(5); } else if ((Key.isDown(_root.l)) && (Key.isDown(_root.u)) && Key.getCode() == _root.u) { speed[1] = 0; gotoAndStop(4); // 判断右的按钮~!!!!!!! } else if ((Key.isDown(_root.r)) && (Key.isDown(_root.d)) && Key.getCode() == _root.d) { _root.fire = 2; speed[1] = 0; gotoAndStop(5); } else if ((Key.isDown(_root.r)) && (Key.isDown(_root.u)) && Key.getCode() == _root.u) { speed[1] = 0; gotoAndStop(4); // 判断下的按钮 } else if ((Key.isDown(_root.d)) && (Key.isDown(_root.l)) && Key.getCode() == _root.l) { scale = 0; speed[1] = 0; gotoAndStop(5); } else if ((Key.isDown(_root.d)) && (Key.isDown(_root.r)) && Key.getCode() == _root.r) { scale = 1; speed[1] = 0; gotoAndStop(5); // 判断上的按钮 } else if ((Key.isDown(_root.u)) && (Key.isDown(_root.l)) && Key.getCode() == _root.l) { speed[1] = 0; scale = 0; gotoAndStop(4); } else if ((Key.isDown(_root.u)) && (Key.isDown(_root.r)) && Key.getCode() == _root.r) { speed[1] = 0; gotoAndStop(4); scale = 1; } else { _root.fire = 1; speed[1] = 6; } } } } onClipEvent (enterFrame) { if (scale == 1) { _xscale = 100; } else { _xscale = -100; } } onClipEvent (keyUp) { if (_root.go == "") { _root.player.gotoAndStop(1); } else { _root.player.gotoAndStop(_root.go); } }
------------------------------------------ MC里的AS: 第一帧:
_root.z = 0;
最后帧:
_root.z = 1; _root.go = ""; _root.b=true; _root.player.gotoAndStop(1); //这样可以保持按钮的延续性,例如跳起来的时候 按其他的按钮是不起作用的
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |