移动播放器javascript

移动播放器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

我不明白这部分:

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.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

相关代码:

self.keyDown=function(){keys[event.keyCode]=1;}; self.keyUp=function(){delete(keys[event.keyCode]);};
正在指定当前按下的键。假设
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]); };