3

我确实有一个Paper.path()充满简单纹理的拉斐尔:

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

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

我现在遇到的问题是,虽然onmove调用了 -handler 函数,但有问题的元素将被重新计算并且必须再次绘制。显然这对拉斐尔来说“太多了”,填充图案将随机消失(闪烁)并在一段时间后再次出现(最迟onend)。

我使用的实际代码有点过多,无法在此处发布,但我构建了一个小提琴,您可以在其中看到发生了什么(您可以拖动四边形的上边)。

有一个简单的解决方法吗?

我习惯于画布而不是拉斐尔(实际上这是我第一次真正使用拉斐尔)所以也许我每次改变时重绘所有东西的方法是完全错误的?

编辑:我刚刚发现这似乎也与浏览器相关。Chrome 和 Firefox 会产生闪烁,而 Safari 似乎一切正常。

4

1 回答 1

2

这似乎是缓存问题(raphael.js 不会缓存位图填充,并且会在每次更改时重新加载它)并且(对我而言)由GitHub 上的这个拉取请求修复(截至 2012 年 8 月 14 日)仍待处理.

Raphael 很难/不可能自己构建,因为 make 文件指向本地和/或不存在的文件,但是您可以手动连接所有内容,修改构建脚本或使用示例中使用的修改后的构建来获取修复。

让我们希望它能在 Raphael 的未来版本中找到自己的方式。

于 2012-08-14T09:57:44.457 回答