我正在制作一个javascript / HTML画布游戏。
我希望每个玩家对象都存储一组图像, 但似乎图像函数只能在全局变量中发生。
以下是我提出的一个解决方法:
var image;
function loadPic(a){
image = new Image();
image.src = a;
return image;
}
它的使用方式如下:
pictures.push(loadPic(links[i]));
其中links是路径字符串数组。 现在,图片(全局数组),无法复制或用于任何事物。
我做错了什么吗? https://github.com/kaninepete/Javascript-Games/blob/images/MVP.js
答案 0 :(得分:0)
我没有在你链接到的github repo中看到任何图片加载代码,所以我看不到源代码......至于上面@ Pointy的评论,这里是proof。请注意,在闭包内部,变量img
是本地的,即在全局范围内不可用,并且代码运行得很好。
答案 1 :(得分:0)
我无法重现您描述的错误,使image
本地更改一无所获,我尝试了IE 9,Firefox 5和Chrome。但是我可能会产生其他一些错误,这些代码只有在修复之前才能在Chrome中使用。
您缺少doctag,阻止画布在Internet Explorer 9中工作,将<!DOCTYPE HTML>
放在HTML文档的顶部。
您获取并尝试设置不存在的元素的innerHTML:$("score").innerHTML = score;
,删除它或制作相应的元素。
canvas.onmousedown = myDown;
仅适用于具有快捷元素访问权限的浏览器,您应使用$("canvas").onmousedown = myDown;
请注意,在上面的代码中,$
被定义为document.getElementById
的简写。