尝试在<canvas>
上管理10.000个简单形状,我尝试使用缓存作为重绘的替代品。令我惊讶的是:
ImageData
和canvas.{get|put}Image
似乎非常慢。 canvas.createPattern
缓存模式几乎与重绘一样快。 然而,出于某种原因,一些画布在缓存期间会中断。在一些查找之后,以不规则的间隔(每2-5个缓存查找),检索一个导致
的画布InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
被抛出。我使用相同的代码来缓存不同的对象,所以我认为问题不是缓存,而是canvas
对象的数量。
也许我感兴趣的是我将形状设置为(0,0),将它们的大小减小到无。例如,即使矩形是6x3px大,也会发生错误,所以它不应该是关于大小调整的。
有什么想法吗?如果没有立竿见影的想法,我会简化发布的代码。谢谢,nobi
答案 0 :(得分:10)
在我的情况下,我看到这个错误因为零画布区域:如果width * height = 0,那么这样的画布在drawImage期间会出现此错误。
答案 1 :(得分:4)
Ken是完全正确的 - 尽管当矩形仍然是6x3时我看到了错误,但当我将矩形设置为size(1,1)而不是(0,0)时,错误不再出现了。