移动播放器javascript
我不明白这部分: self.keyDown=function(){keys[event.keyCode]=1;}强> self.keyUp=function(){delete(键[event.keyCode]);} 请解释此代码的作用) MVC: 控制器:移动播放器javascript,javascript,Javascript,我不明白这部分: self.keyDown=function(){keys[event.keyCode]=1;} self.keyUp=function(){delete(键[event.keyCode]);} 请解释此代码的作用) MVC: 控制器: this.init = function() { keys = {}; } self.trgt = function(){ if(this.event.target === myContainer.qu
this.init = function() {
keys = {};
}
self.trgt = function(){
if(this.event.target === myContainer.querySelector('#start')) {
myModel.startGame();
window.addEventListener('keydown', self.keyDown);
window.addEventListener('keyup', self.keyUp);
}
}
self.keyDown = function() {
keys[event.keyCode] = 1;
};
self.keyUp = function() {
delete (keys[event.keyCode]);
};
self.moveHero = function(keycode) {
myModel.moveHero(keycode);
};
setInterval(function() {
for (let keycode in keys) {
self.move(keycode);
}
}, 20);
型号:
if (!sometask) {
if (keycode == 37 || keycode == 65) {
self.moveLeft();
}
if (keycode == 38 || keycode == 87) {
self.moveTop();
}
if (keycode == 39 || keycode == 68) {
self.moveRight();
}
if (keycode == 40 || keycode == 83) {
self.moveBottom();
}
}
};
翻译成简单的英语:
- 如果用户按下
(数字40),则将对象向下键
中的键40设置为1键
- 如果用户按下
(数字38),则从键向上
对象中删除键38键
正在指定当前按下的键。假设
event.keyCode=37
,在本例中,作为对象的keys
变量现在将具有一个属性,该属性表示keys[37]=1
,并且将保持这种方式,直到调用keyUp
函数并将其删除。当文件键[37]=1
时,字符将继续向左移动,一旦该键被删除,字符将停止移动。这些行用于设置每次调用事件keyDown(按下键)或keyUp(释放键)时将调用的函数
因此,让我们关注函数中的实际代码:
对于keyDown
,它将字典中的变量设置为值。例如,如果按下“a”,键盘上的某个“a”键的int值为65(请参阅),它会将键[65]=1
只要按住按钮,该值将保持不变,但一旦松开,该值将通过使用delete
取消设置
对于每个键盘键,依此类推
然后,游戏的主循环将查看设置了哪些变量(通过使用“for…in key”),并将为每个具有特殊值的变量执行移动函数,我猜对应于a-w-s-d或左上右下。
键是一个对象,其中每个属性都是在给定时刻按下的键盘键的键代码。当键向下时,我们将键添加到对象中,当我们释放键时,我们将记住它。你发布的代码中根本没有使用它,但可能在其他地方使用过它,以了解在任何时刻按下了哪些键。请参见和
self.keyDown = function() { keys[event.keyCode] = 1; };
self.keyUp = function() { delete (keys[event.keyCode]); };