一聚教程网:一个值得你收藏的教程网站

迷宫基础代码(as3)

时间:2008-02-29 00:00:00 编辑:简简单单 来源:转载

使用上、下、左、右键控制小球方向,使用ENTER_FRAME事件控制小球移动。

w = xx._width/2;
h = xx._height/2;
onEnterFrame = function () {
 if (Key.isDown(37)) {
  xx._x = xx._x-speed;
 } else if (Key.isDown(39)) {
  xx._x = xx._x+speed;
 } else if (Key.isDown(38)) {
  xx._y = xx._y-speed;
 } else if (Key.isDown(40)) {
  xx._y = xx._y+speed;
 }
 xmax = xx._x+w;
 ymax = xx._y+h;
 xmin = xx._x-w;
 ymin = xx._y-h;
 if (bg.hitTest(xx._x, ymin, true)) {
  xx._y += speed;
 }
 if (bg.hitTest(xx._x, ymax, true)) {
  xx._y -= speed;
 }
 if (bg.hitTest(xmin, xx._y, true)) {
  xx._x += speed;
 }
 if (bg.hitTest(xmax, xx._y, true)) {
  xx._x -= speed;
 }
};

speed = 2;

但是这个代码加大speed的值是会产生问题的,是因为-= speed和+= speed造成的。

所以正确的做法应该是

private function Kdown(evt) {
      if (evt.keyCode==37) {
    key[0]=-speed;
    } else if (evt.keyCode==38) {
    key[1]=-speed;
   } else if (evt.keyCode==39) {
    key[2]=speed;
   } else if (evt.keyCode==40) {
    key[3]=speed;
   }
}

使用数组key记录按键状态,然后使用enterframe控制移动。

private function enterframe(evt) {
    if (ship.x<0) {
    key[0]=0;
   } else if (ship.x>550) {
    key[2]=0;
   } else if (ship.y<0) {
    key[1]=0;
   } else if (ship.y>400) {
    key[3]=0;
   }
   ship.x+=(key[0]+key[2]);
   ship.y+=(key[1]+key[3]);

  }
这也是as3的标准做法,上面我是检测的影片舞台,可以换成检测碰撞。

文章评论

热门栏目