为什么画布无法正确渲染?

时间:2016-05-23 08:25:39

标签: javascript html5 canvas

我非常熟悉使用HTML5 <canvas>标记制作游戏。当我尝试从Komodo Edit 9运行游戏时,它运行得很好。

然而,当我尝试将我的游戏上传到任何网络托管服务时,它永远无法正常工作。如下所示garridpunching.neocities.org。

问题在于,一旦画布呈现,一切都会瞬间消失,然后立即消失,只留下一块空白的黑色画布。

Google调试程序为我尝试的所有五个主机返回以下错误:Uncaught InvalidStateError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state.

错误在行ctx.drawImage(sprite.cursor, cursor.x, cursor.y, 40, 40);上抛出,当我直接从localhost运行html文件时,它会正常工作。

这是什么意思,我该如何解决?提前谢谢。

2 个答案:

答案 0 :(得分:1)

这可能与img无法正确加载有关。检查图像的路径,也许在部署到托管服务时你没有复制其中的一些,你有一条在本地计算机上工作但不在远程站点上的路径。

另外:您是否从与js相同的域中加载所有图像?如果不是这种情况,也可以由Cross-Origin Resource Sharing (CORS)问题触发。

答案 1 :(得分:0)

这可能是因为您正在呼叫step,即开始游戏&#39;在所有图像加载之前。解决方法是在调用step之前等待精灵图像加载。

load();
window.onload = step; // may need inline .onload() calls on sprite's imgs

这不会在本地发生的原因是因为它会立即加载所请求的图像,因为它不必下载它们或类似的东西。