首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从外部事件更改对象变量

无法从外部事件更改对象变量
EN

Stack Overflow用户
提问于 2012-04-15 21:05:35
回答 1查看 496关注 0票数 1

我在玩JS的制作游戏。并且遇到了无法改变主html文件中的事件的变量的砖墙。也就是说offSetX。为什么它不会改变?

代码语言:javascript
复制
var game = new Game();
window.addEventListener("keyup", game.input);
game.start('myCanvas');

游戏对象如下所示:

代码语言:javascript
复制
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);
    }
};
EN

Stack Overflow用户

回答已采纳

发布于 2012-04-15 21:10:10

试试这个:

代码语言:javascript
复制
window.addEventListener("keyup", function(key){
   game.input.apply(game,[key]);
});

问题出在window.addEventListener("keyup", game.input)行上,您正在为window对象添加处理程序,这就是为什么在input方法中,"this"window对象(它没有任何"offSetX"方法),而不是game对象。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10162279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档