为什么无法更新对象img属性的访问权限?

时间:2017-01-25 00:39:20

标签: javascript scope game-engine javascript-objects

我正在尝试自己创建一个简单的JS游戏引擎。

以下是其中一个州的代码。

var menuState = {
    //state variables
   menuBttn: {x: _canvas.width/2, y:_canvas.height/2, img: imageArray[2], over: false, click: function(){changeState(2);}},

    preload: function () {

    },

    update: function(){
        surface.clearRect(0, 0, _canvas.width, _canvas.height);
        for (var i = 0; i < menuAssets; i++){
        surface.drawImage(menuState.menuBttn.img , menuState.menuBttn.x, menuState.menuBttn.y);              
        console.log(menuState.menuBttn.x); //this shows that update CAN access properties of menuBttn
        }
    },

    exit: function(){

    },

};

但是,当我运行状态时,更新函数会抛出错误 - “执行drawImage失败,值不是HTMLImageElement类型”。  我知道这意味着menuState.menuBttn.img不是图像()。

但是这里是定义了imageArray (这是一个全局变量)的代码。

var preloadState = {
    //state variables

    preload: function () {
        console.log("In preloadPreload..");

        for (var i=0; i < assetsArray.length; i++){

        imageArray[i] = new Image();
        imageArray[i].src = assetsArray[i];
        console.log("Loaded asset.." + i);
        }

        changeState(1);
    }

};

assetArray只是一个包含源路径的字符串数组。

所以我想我的问题是:为什么menuState.menuBttn.img不是一个Image()对象?

0 个答案:

没有答案