2012-02-16 51 views
1

我的问题:
我正在制作HTML5游戏,并试图通过一次绘制背景而不是每隔一帧重新绘制一次,以使其更快。
为此,我在画布上绘制了背景,然后尝试从中获取ImageData。不幸的是,我被一个安全错误拦截了。无法执行操作,因为图像来自外部来源。
我研究过这个,看起来这是一个“功能”,阻止坏人从用户的硬盘中窃取内容。虽然我加载的这些图像不是来自硬盘驱动器。

我真的很想加快我的比赛。有没有解决方案来解决安全错误,或者甚至可以直接将图像加载到图像数据中,以便通过循环像素来绘制图像?

(注:我不希望有多个画布来完成这项工作的混乱)​​

谢谢,甘如何直接将图像绘制到ImageData数组 - HTML5/Javascript

回答

1

周围有没有办法,但你可以从另一个域使用的绘制图像getImageData在这种情况下总会引发安全错误。这是为了防止窃取敏感信息,因为网站可以生成包含基于cookie或IP地址的私人用户信息的动态图像。但是,您可以简单地使用服务器端脚本来代理映像。

但老实说getImageDataputImageData是相当慢,我不明白这会如何加快你的游戏。在我看来,你认为绘制图像数据比简单地使用drawImage,它的而不是更快。

如果您希望动画看起来不错,那么您将不得不重绘所有内容,这就是动画的工作方式。

+1

我明白了。嗯。我只是在想,绘制704个单独的44x44图像会比绘制单个968x748图像数据慢。我不知道。你能想出其他提高效率的方法吗? – Gan 2012-02-16 06:09:53

+0

哦,在这种情况下,我建议你做服务器端脚本来代理图像,而不是使用getImageData,如果你只是使用canvas.toDataURL来创建一个Image对象并用drawImage绘制它,那会更好。 – Delta 2012-02-16 06:18:29

+0

会有办法将图像数据转换为图像吗? – Gan 2012-02-16 06:30:46