我非常熟悉使用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文件时,它会正常工作。
这是什么意思,我该如何解决?提前谢谢。
答案 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
这不会在本地发生的原因是因为它会立即加载所请求的图像,因为它不必下载它们或类似的东西。