2

私は Melon.Js を使用してゲームを開発しています。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>

「プレイヤー.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 キャンバスの動きを無効にできません

4

1 に答える 1

3

メッセージを入力する入力テキストで keyUp または keyDown イベントが呼び出されると、stopImmediatePropagationメソッドを使用できます。これにより、イベントの伝播が停止し、keyUp または keyDown イベントが melonJS リスナーに到達しなくなります。

angularを使用しているようです。要素でこのメソッドを呼び出すディレクティブを実装できます。これがサンプルコードです。

あなたの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">
于 2014-11-08T14:26:02.077 に答える