我正在尝试自己创建一个简单的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()对象?