0

オブジェクトのプロパティを取り、それを keypress イベントに転送しようとしています - 問題は、イベント自体しか追加できず、 this.x_point を使用しても子関数では機能しないことです。これが私のコードです。this.x_point を var.x_point に転送してから使用することもできますが、それはオブジェクトであるという点をまったく台無しにします。

function ninja(name, speed){
this.name = name;
this.speed = speed;
this.x_point = 0;
this.y_point = 0;
loadImages("n_main", 0, 0);
loadImages("n_armL", -5, 8);
loadImages("n_armR", 25, 8);

}

ninja.prototype.move = function(){
window.addEventListener("keydown", keyPress, false);
function keyPress(e){
    if(e.keyCode == 68){ //d
        alert(this.x_point);
    }
}

}

4

2 に答える 2

1

これにはバインドを使用できます。

ninja.prototype.move = function(){
window.addEventListener("keydown", keyPress.bind(this), false);
function keyPress(e){
    if(e.keyCode == 68){ //d
        alert(this.x_point);
    }
}

または、jQuery を使用している場合は、jQuery.proxy(keyPress, this) を試してください。

于 2013-03-04T13:01:27.743 に答える
0

たとえば、次のように使用thatします。

ninja.prototype.move = function(){
 var that = this;
 window.addEventListener("keydown", keyPress, false);
 function keyPress(e){
  if(e.keyCode == 68){ //d
    alert(that.x_point);
 }
}
于 2013-03-04T12:59:58.570 に答える