私がobj内JavaScriptのブール関数
コード1の方法からブール値にアクセスしようとしている - エラー
var obj = {
positionX : 700,
radius : 10,
checkRight : function(){
if (obj.positionX < (canvas.width - obj.radius)){
return true;
}
},
moveRight : function(){this.positionX += 5;}
};
var Key = {
right : false
};
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
function keyDownHandler(event) {
switch(event.keyCode) {
case 39:
Key.right = true;
break;
}
};
function keyUpHandler(event) {
switch(event.keyCode) {
case 39:
Key.right = false;
break;
}
};
function draw() {
drawObj();
if (Key.right && obj.checkRight){ // I've also tried if (Key.right && obj.checkRight==true)
obj.moveRight();
}
};
コード2 - 作品が、だらしない
var obj = {
positionX : 700,
radius : 10,
moveRight : function(){this.positionX += 5;}
};
var Key = {
right : false
};
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
function keyDownHandler(event) {
switch(event.keyCode) {
case 39:
Key.right = true;
break;
}
};
function keyUpHandler(event) {
switch(event.keyCode) {
case 39:
Key.right = false;
break;
}
};
function draw() {
drawObj();
if (Key.right && obj.positionX < (canvas.width - obj.radius)){
obj.moveRight();
}
};
を
オブジェクトがキャンバスの端に達すると、objが右に移動しなくてはならないという考えがあります。しかし、このコードでは、まったく動かないでしょう。しかし、もし私が 'checkRight'コードを直接draw()if文に入れればうまく動作します。それはobj関数として動作しない理由を知っていますか?
あなたが持っている「コード1」というラベルの付いたセクションで37に
そのため 'obj.checkRight'は、関数である - しかし、あなたはそれを呼び出していない - '() 'を呼び出すに追加それ! 'obj.checkRight()' - 単に 'obj.checkRight'を実行すると関数定義が返されます。つまり、' if(obj.checkRight) 'は常に通過します。 – tymeJV