【发布时间】:2012-10-21 05:26:22
【问题描述】:
我正在尝试使用 RaphaelJS 为文本设置动画,但遇到了断断续续的动画(“颤抖”?)。我已经四处寻找有关此的其他问题,但到目前为止我只能找到特定于 jQuery 或非 SVG 的主题。如果我忽略了类似的问题,请告诉我!
本质上,我正在尝试将文本元素直观地包装在 rect 元素中,并通过动画同时翻译它们。我知道 'g' 元素,但我不想使用它,因为旧版本的 Internet Explorer 不支持它。相反,我对文本和矩形使用单独的 Raphael 动画:
var raphRect = paper.rect(
(paperWidth/2)-rectWidth/2
,paperHeight-rectHeight
,rectWidth
,rectHeight
,rectHeight/2
)
...
,raphText1 = paper.text(
paperWidth/2
,paperHeight-(2*fontSize)
,'this is jumpy text?'
)
...
raphRect.animate({y : -rectHeight}, risingTime, 'linear');
raphText1.animate({y : -2*fontSize}, risingTime, 'linear');
我假设抖动是由文本元素的每个动画帧中的四舍五入引起的。有什么方法可以减轻或防止这种抖动? (减少动画时间不是一种选择......而且看起来甚至没有帮助。)
(我有一个我正在尝试做的例子here。我已经包含了两行文本和一个粗体笔划,以强调抖动。)
【问题讨论】:
-
对此你无能为力,浏览器根本不做动画很流畅,你可以看看 requestAnimationFrame 看看是否有帮助,但我怀疑它。
-
尤其是文本的子像素渲染非常糟糕。您是否尝试过使用打印而不是文本?我发现真正的路径抗锯齿非常更令人满意。
-
通常在纯 SVG 中,您会将 text-rendering 属性设置为 geometryPrecision。例如,这将使它在 Firefox 中变得流畅。不幸的是,RaphaelJS 似乎不支持设置文本渲染。
标签: animation text svg raphael