2012-07-12 31 views
3

我有在拉斐尔Paper.path()一个充满纯朴的质地:Raphael.js图像填充不更新不断

var fill = screen.path(Iso.topFacePath(top)).attr({ 
    fill: 'url(http://www.mydomain.com/mytexture.jpg)', 
}); 

的路径可以由用户通过拖放来改变。为此,我使用Element.drag()来绑定处理程序。

现在我介绍的问题是,当调用onmove-handler函数时,将重新计算所讨论的元素,并且必须再次绘制。显然,这对raphael来说太“太”了,填充图案会随机消失(闪烁),并在一段时间后再次出现(最新的onend)。

我实际使用的代码是有点太多,张贴在这里,但我建了一个fiddle(即仍然是一个有点乱,所以裸与我)在这里你可以看到发生了什么(你可以拖动四边形的上侧)。

有没有简单的解决方法呢?

我习惯画布比拉斐尔要多得多(实际上这是我第一次真正使用拉斐尔)所以也许我每次都在重绘所有东西的方法......很明显是错误的吗?

编辑:我刚刚发现,似乎与浏览器有关。 Chrome浏览器和Firefox将产生闪烁的地方,Safari似乎做的一切都很好。

回答

2

这似乎是缓存的问题(raphael.js不高速缓存中的位图填充,并重新加载它的每一个变化),并通过this pull request on GitHub是(作为固定的(对我来说)08/14/2012)仍在等待中。

由于make文件指向本地和/或不存在的文件,Raphael很难/不可能自行构建,但您可以手动连接所有内容,修改构建脚本或使用在the example中使用的修改后的构建得到修复。

让我们希望它能找到未来版本的拉斐尔。

+0

非常感谢这个发现!我一直试图找到一个修复天,现在使用你的示例链接修改后的脚本,一切都很好:) – Andrej 2012-08-22 11:52:26