1

私はJSでゲームを作って遊んでいました。そして、メインの html ファイルのイベントから変数を変更できないというレンガの壁にぶつかります。つまり言えばoffSetX。変わらないのはなぜ?

var game = new Game();
window.addEventListener("keyup", game.input);
game.start('myCanvas');

ゲームオブジェクトは次のようになります。

function Game() {
    
    this.offSetX = 0;

    this.init = function (id) {

        this.canvas = document.getElementById(id);
        this.context = this.canvas.getContext('2d');
        this.blocks = [];
        this.blocks.push(new block());

    };

    this.logic = function () {
        for (var i in this.blocks) {
            this.blocks[i].update(this.offSetX);
        }
    };

    this.draw = function () {
        for (var i in this.blocks) {
            this.blocks[i].draw(this.context);
        }
    };

    this.main = function () {
        this.logic();
        this.draw();
        console.log(this.offSetX);
    };
    this.input = function (key) {

        if (key.keyCode == 37) {
            this.offSetX--;
            console.log(this.offSetX);
        }
        if (key.keyCode == 39) {
            this.offSetX++;
            console.log(this.offSetX);
        }


    };


    this.start = function (id) {
        var _this = this;

        this.init(id);
        this.interval = setInterval(function () {
            _this.canvas.width = _this.canvas.width;
            _this.main();
        }, 30);
    }
};
4

1 に答える 1

2

これを試して:

window.addEventListener("keyup", function(key){
   game.input.apply(game,[key]);
});

問題は行ごとでした。オブジェクトのwindow.addEventListener("keyup", game.input)ハンドラーを追加しているため、メソッドでは、オブジェクトではなくオブジェクト(メソッドを持たない)です。windowinput"this"window"offSetX"game

于 2012-04-15T13:10:09.583 に答える