【问题标题】:Label jigging during animation动画期间的标签跳动
【发布时间】:2021-07-16 09:32:37
【问题描述】:

大家好
这是我遇到的一个小问题:标签在动画过程中抖动,如codepen所示。

let board = JXG.JSXGraph.initBoard('jxgbox', {axis: false,});
let dummy = {t:0};
for(let i = 0; i < 4; i++){
  board.create('point', [()=> -4 + dummy.t, ()=> 4 -dummy.t - i], {
    showInfobox:false,
    label: {
      anchorX: 'left', 
      anchorY: 'top',
      fontSize: 30,
    },
  });
}
gsap.to(dummy, {
  ease: 'power2.inOut',
  duration:10,
  t:3,
  onUpdate: ()=> board.update()
})

https://codepen.io/ywlee/pen/yLbgxpV

我能想到的唯一办法就是缩短动画时间

有人知道怎么解决吗?感谢您阅读我的问题:)

【问题讨论】:

    标签: jsxgraph


    【解决方案1】:

    我的印象是,如果将 SVG 文本用于点标签(即内部文本),抖动会略微减少:

    board.create('point', [()=> -4 + dummy.t, ()=> 4 -dummy.t - i], {
        showInfobox:false,
        label: {
            display: 'internal', // <-- SVG texts instead of HTML texts
            anchorX: 'left', 
            anchorY: 'top',
            fontSize: 30,
        }
    });
    

    【讨论】:

    • 非常感谢!我不知道这是不是真的,是因为在源代码中,标签的位置在渲染之前是四舍五入的?我不确定,因为我不知道我是否正确跟踪所有函数调用
    • 您能告诉我如何解决吗?因为我想我会在标签中使用很多 katex,这不能是“内部”@Alfred
    • 是的,标签的位置被四舍五入为像素的整数值。我可以尝试尝试非整数值是否对您的情况有所帮助。然而,抖动的更可能的原因是更新期间重新渲染了 katex 文本。你能检查一下,如果是这种情况吗?一种解决方法是对具有固定宽度和高度的标签使用自定义 CSS 类。那么至少渲染的 JSXGraph 部分应该是平滑的。
    • 我在问题中编辑了相同的代码笔作为新示例。由 Katex 呈现的具有相同字符串的标签与 html 标签看起来非常相似。我还尝试在updateText 函数中删除Math.round,现在katex 标签与内部标签一样平滑!非常感谢您快速而耐心的回复,他们对我非常有帮助,我希望我能更快地学习编码并尽快为这个项目做出贡献@Alfred
    • 非常感谢您的研究工作。现在在 v1.2.4(github 上的分支 1.2.4)的源代码中禁用了舍入。
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2020-10-03
    • 1970-01-01
    • 2018-02-19
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多