仅在全局变量中处理javascript图像?

时间:2012-01-16 16:18:21

标签: javascript image

我正在制作一个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

2 个答案:

答案 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的简写。