【发布时间】:2012-07-13 14:54:33
【问题描述】:
我想在我的 Html5 画布上平移而无需重新渲染,平滑过渡(不跳跃)。这可能吗?有代码示例吗?
如果可能的话,这也可以用于缩放吗?
在低端系统(Windows 平板电脑)上运行时,我遇到了性能问题,其中平移只会占用过多的 CPU 并最终无法使用。范围约为 2000 个图形对象。
【问题讨论】:
我想在我的 Html5 画布上平移而无需重新渲染,平滑过渡(不跳跃)。这可能吗?有代码示例吗?
如果可能的话,这也可以用于缩放吗?
在低端系统(Windows 平板电脑)上运行时,我遇到了性能问题,其中平移只会占用过多的 CPU 并最终无法使用。范围约为 2000 个图形对象。
【问题讨论】:
不幸的是,你不能在不重绘的情况下变换画布;但是,如果真的只是绘制调用过多的问题,您可以渲染一次画布,缓存结果,然后在后续绘制时重绘缓存的图像。请注意,此方法无法很好地缩放超过 150%,具体取决于您绘制的实际内容。
我做了一个小提琴,展示了这可能是什么样子:
http://jsfiddle.net/mobidevelop/sBvab/
可能会有一点跳动,但总体上比without caching the image要好。
您的里程可能会有所不同。
【讨论】:
简而言之,不。如果你想在画布上平移,你必须重新绘制场景,除非你做的不好,比如使用 CSS 来限制可见的画布大小并且你的画布实际上更大。 (不要这样做,这不会提高性能)。
但是如果你写得好的话,在平移时重绘你的画布应该很快。如果它是“跳跃的”,那么这里很可能是其他问题。
上述方法也适用于缩放,尤其是当您希望矢量路径/文本/等进行缩放时。
【讨论】: