我正在构建一个MVC风格的JavaScript游戏,并且遇到了问题。我需要检查,如果keyState是39调用一个函数之前,但我发现了以下错误:未捕获TypeError:keyHandler不是函数
Uncaught TypeError: _self.keyHandler is not a function
任何人可以帮助我吗?问题是与下面的代码:
if(keyState[39] = true){
_self.keyHandler();
};
全码:
GOBLINS.Controller.prototype.input = function() {
var _self = this;
var keyState = {};
window.addEventListener('keydown', function(e){
if(e.keyCode === 39){ // Move Right
keyState[e.keyCode] = true;
};
if(e.keyCode === 37){ // Move Left
keyState[e.keyCode] = true;
};
if(e.keyCode === 38){ // Move Up
keyState[e.keyCode] = true;
};
if(e.keyCode === 40){ // Move Down
keyState[e.keyCode] = true;
};
}, true);
window.addEventListener('keyup', function(e){
if(e.keyCode == 39){
keyState[e.keyCode] = false;
};
if(e.keyCode == 37){
keyState[e.keyCode] = false;
};
if(e.keyCode == 38){
keyState[e.keyCode] = false;
};
if(e.keyCode == 40){
keyState[e.keyCode] = false;
};
}, true);
if(keyState[39] = true){
_self.keyHandler();
};
this.keyHandler = function(){
if(keyState[39] === true){
this.M.images[2].moveRight();
console.log(this.M.images[2]);
};
if(keyState[37] === true){
this.M.images[2].moveLeft();
};
if(keyState[38] === true){
this.M.images[2].moveUp();
};
if(keyState[40] === true){
this.M.images[2].moveDown();
};
};
window.requestAnimationFrame(function(){
_self.input();
});
};
@SHAZ,请不要将无意义的格式添加到帖子中,以绕过6个字符的规则。它的确如此,以至于你对帖子的改进不会太大。今后,请在这篇文章中找到一些有意义的*来改进,并建议。否则,请不要建议编辑。 –
实际上你是按照你写的方式分配true的keyState [39] – Icepickle
这个原型是如何与你的UI连接的,换句话说,它是什么时候启动的?它是什么时候被调用的? – Icepickle