键盘输入
Keyboard Inputs
我正在编写一个项目,当我尝试在专用类中获取键盘输入时遇到问题。
所以这是我的控制器类:
Controller = function() {
// Initialisation clavier
document.onkeydown = this.onKeyDown;
document.onkeyup = this.onKeyUp;
// Touches
this.left = false;
this.up = false;
this.down = false;
this.right = false;
}
// Touche appuyée
Controller.prototype.onKeyDown = function(event) {
if (event.keyCode == 37) {
this.left = true;
}
else if (event.keyCode == 38) {
this.up = true;
}
else if (event.keyCode == 39) {
this.down = true;
}
else if (event.keyCode == 40) {
this.right = true;
}
}
// Touche relâchée
Controller.prototype.onKeyUp = function(event) {
if (event.keyCode == 37) {
this.left = false;
}
else if (event.keyCode == 38) {
this.up = false;
}
else if (event.keyCode == 39) {
this.down = false;
}
else if (event.keyCode == 40) {
this.right = false;
}
}
。我在初始化期间使用它创建一个实例。但是当我尝试在另一个类中获取布尔状态时:
// Déplacement
Player.prototype.move = function() {
if (controler.left) {
this.posHorizontal -= this.speed;
}
}
这行不通!当我在控制器类中显示状态时,它返回"true",但不返回另一个类。我没有错误,但只显示了一个"假"(我已经尝试过使用控制台.log但没有办法)。
感谢您的帮助!
当浏览器调用 onKeyDown
和 onKeyUp
方法时,事件发生后,函数内的 this
关键字指向文档而不是Controller
实例。
更改行
document.onkeydown = this.onKeyDown;
document.onkeyup = this.onKeyUp;
自
document.onkeydown = this.onKeyDown.bind(this);
document.onkeyup = this.onKeyUp.bind(this);
它应该可以解决问题。
相关文章:
- 移动HTML输入文本框在提交时隐藏软键盘
- 将键盘输入保存到变量中
- 无法通过 JavaScript 在输入焦点上触发键盘
- 安卓键盘未打开绑定到触摸启动的输入标签
- 禁用输入文本字段中的键盘
- Chrome(Android)键盘将单词转移到js焦点更改的下一个输入
- 如何创建一个在JavaScript中执行与键盘输入相同事件的按钮
- 限制键盘输入
- 是否覆盖网站上文本输入区域的默认移动设备键盘?(HTML/JS/jQuery)
- 如何在Windows 7/8中通过单击文本输入来显示屏幕键盘
- 如何在Android网络视图中完全禁用所有输入的软键盘
- 在输入文本框的文本中间插入键盘字符值
- 输入焦点关闭键盘,需要长时间触摸
- 触发数字键盘输入文本所有移动设备
- 如何在不隐藏键盘的情况下清除输入搜索?(手机)
- 在html输入元素的焦点上触发数字键盘
- 每当我按下输入框内的键盘输入按钮(其中有文本)时,都会出现新的段落
- 禁用输入键盘3秒后,第一次按下并重新启用输入键盘再次
- 处理只输入键盘按钮点击使用jquery
- contentteditable + selectAll: Firefox不允许在动态生成的内容上输入键盘