2014-11-01 45 views
2

我正在用Melon.Js開發一個遊戲,並在加載它的畫布下創建一個聊天窗口。 問題是,當我輸入時,如果我按AWDS鍵字符移動。 有誰知道如何暫時禁用(只要聊天窗口焦點)人物動作?如何暫時禁用人物動作MelonJS?

「game.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 canvas中

+0

一種方式是[解除綁定](http://melonjs.github.io/docs/me.input。 html#unbindKey)當聊天區獲得焦點時的鍵,然後當遊戲重新獲得焦點時再次[bind](http://melonjs.github.io/docs/me.input.html#bindKey)它們 – Lbatson 2014-11-01 01:15:18

回答

3

當在t中調用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">