2007/04/12 | 按键平滑移动的代码方案。
类别(Flash游戏教程) | 评论(0) | 阅读(687) | 发表于 12:30

  在按键进行移动一个固定步长时,也可以在这个步长内,让移动的主体平滑的移动,这里的解决方案就是,开始移动时先去除掉键盘侦听,之后使用移动公式进行移动,移动结束后,恢复键盘侦听,接受下一次的键盘控制。

代码如下:

//基准步长, 单位: 30像素
var stepLength = 30;
//
//建立一个表示方向的全局变量
var dir:String;
//
//建立键盘侦听,接收键盘消息
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
 if (Key.getCode() == Key.UP) {
  dir = "Up";
 } else if (Key.getCode() == Key.RIGHT) {
  dir = "Right";
 } else if (Key.getCode() == Key.DOWN) {
  dir = "Down";
 } else if (Key.getCode() == Key.LEFT) {
  dir = "Left";
 }
 moveBox();
};
Key.addListener(keyListener);
//
//根据键盘消息进行单个箱子的位置移动
function moveBox() {
 Key.removeListener(keyListener);
 var temp = stepLength;
 var short = 3;  //平滑移动的最小单位,
 switch (dir) {
 case "Up" :
  onEnterFrame = function () {
   if (temp - short > 0) {
    box_mc._y -= short;
    temp -= short;
   } else {
    box_mc._y -= temp;
    Key.addListener(keyListener);
    delete this.onEnterFrame;
   }
  };
  break;
 case "Right" :
  onEnterFrame = function () {
   if (temp - short > 0) {
    box_mc._x += short;
    temp -= short;
   } else {
    box_mc._x += temp;
    Key.addListener(keyListener);
    delete this.onEnterFrame;
   }
  };
  break;
 case "Down" :
  onEnterFrame = function () {
   if (temp - short > 0) {
    box_mc._y += short;
    temp -= short;
   } else {
    box_mc._y += temp;
    Key.addListener(keyListener);
    delete this.onEnterFrame;
   }
  };
  break;
 case "Left" :
  onEnterFrame = function () {
   if (temp - short > 0) {
    box_mc._x -= short;
    temp -= short;
   } else {
    box_mc._x -= temp;
    Key.addListener(keyListener);
    delete this.onEnterFrame;
   }
  };
  break;
 default :
  trace("something wrong here!");
 }
}

相关文章:


鼠标点击配对模式游戏:
挑战记忆力游戏

配对游戏的流程分析

连连看 效果测试 源码下载

《推箱子》系列教程:
 原创教程《推箱子游戏的分析》

《推箱子游戏的分析》续

推箱子游戏关卡数据的可视化设计

 电击方块游戏的分析 

围墙块连接效果的编码处理

 按键平滑移动的代码方案。

0

评论Comments