flash游戏中控制人物的走动

用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);
//这样可以保持按钮的延续性,例如跳起来的时候 按其他的按钮是不起作用的
posted @ 2009-06-11 10:59  A好心情S  阅读(749)  评论(0编辑  收藏  举报