【问题标题】:How to disable a character movements MelonJS temporarily?如何暂时禁用角色移动 MelonJS?
【发布时间】:2014-11-01 01:03:36
【问题描述】:

我正在使用 Melon.Js 开发游戏,并在加载它的画布下方创建一个聊天窗口。 问题是,当我输入 时,如果我按 AWDS 键,字符会移动。 有谁知道如何暂时禁用(只要聊天窗口聚焦)角色移动吗?

“游戏.html”

<div ng-controller="ChatController">
<div class="div-chat">
    <span ng-repeat="msj in chats | orderBy: 'createdAt'"> <b ng-class=""> {{msj.nick}} : </b> {{msj.mensaje}} <br></span>
</div>
<input class="form-control" type="text" ng-model="mensaje"  id="msjChat">
<button type="submit" class="btn btn-default" id="btn_enviar" ng-click="envMsj()">Enviar</button>

“player.js”

me.input.preventDefault;
me.input.bindKey(me.input.KEY.LEFT, 'left', false,false);
me.input.bindKey(me.input.KEY.A, 'left', false,false);
me.input.bindKey(me.input.KEY.RIGHT, 'right', false,false);
me.input.bindKey(me.input.KEY.D, 'right', false,false);
me.input.bindKey(me.input.KEY.UP, 'up', false,false);
me.input.bindKey(me.input.KEY.W, 'up', false,false);
me.input.bindKey(me.input.KEY.DOWN, 'down', false,false);
me.input.bindKey(me.input.KEY.S, 'down', false,false);

我尝试在输入中使用“焦点”,但我无法禁用 MelonJS 画布中的动作

【问题讨论】:

  • 一种方法是在聊天区域获得焦点时unbind 按键,然后在游戏再次获得焦点时再次bind它们

标签: javascript jquery melonjs


【解决方案1】:

当在您键入消息的输入文本中调用 keyUp 或 keyDown 事件时,您可以使用 stopImmediatePropagation 方法。这将停止事件的传播,并且 keyUp 或 keyDown 事件将永远不会到达 melonJS 侦听器。

我让你使用角度。您可以实现在元素上调用此方法的指令。这是一个示例代码。

在你的 javascript 中:

app.directive('chat', function () {
  return {
    restrict: 'A',
    link: function (scope, elem, attrs) {
      elem.bind('keydown', function (e) {
          e.stopImmediatePropagation();
          return false;
      });
      elem.bind('keyup', function (e) {
          e.stopImmediatePropagation();
          return true;
      });
    }
  };
});

在 HTML 中:

<input chat class="form-control" type="text" ng-model="mensaje"  id="msjChat">

【讨论】:

    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    相关资源
    最近更新 更多