为啥开始的 mc 在贝塞尔补间时旋转

Posted

技术标签:

【中文标题】为啥开始的 mc 在贝塞尔补间时旋转【英文标题】:why the starting mc rotates while bezier tween为什么开始的 mc 在贝塞尔补间时旋转 【发布时间】:2016-09-09 13:17:54 【问题描述】:

我正在使用 greensock 贝塞尔插件补间。嘿,我遇到了另一个严重的问题,现在从下面的图片中您可以看到为 mc 设置了贝塞尔路径

当您单击补间时,mc 会自动上下颠倒或任何基于曲线的东西,例如现在它大约 180 度,对于不同的曲线,起始旋转不同,我怎样才能找到第一个初始旋转,以便我可以减少它,让它从0旋转开始播放

我希望你明白我的意思,我正在尝试运行初始旋转不变的贝塞尔曲线,我知道我们可以更改贝塞尔曲线的自动旋转数组,但为此我需要知道初始旋转或告诉我如何我让我的 mc 不旋转并沿路径沿相同的初始旋转自动旋转?

【问题讨论】:

您勾选了autoRotate 选项,您期待什么? autoRotate:false 有什么问题?如果您希望 MC 在某些点上直立但在贝塞尔路径中的其他点上旋转,那么您将不得不链接不同的补间(你知道..一个补间从点 0 到点 2 = 没有自动旋转,然后下一个补间使用自动旋转从第 2 点到最后的第 3 点).. 认为它会根据曲线垂直翻转,我们在 greensock 中有一个选项,我可以在其中为自动旋转的 mc 添加旋转。我只需要知道曲线开始处的旋转是什么,如果您不知道greensock是如何工作的,我认为这不是一个很好的答案,因为您所说的是在没有自动旋转的情况下从1移动到2然后启用自动旋转,如果我这样做,那么它会在2的起点处闪烁,我认为你根本不了解greensock,学习它,在你发布一些cmets之前会有用。 你说得对,我不使用 GreenSock,我使用 ENTER_FRAME 事件编写自己的补间函数。如果我很懒,我会使用 CaurinaBtweenAS3,因为我个人喜欢这些。我建议您在等待答案时尝试一个合乎逻辑的事情,但是如果它“轻弹”那对我来说是不合逻辑的,我会让您遭受该系统的痛苦...我查看了源代码您需要的线索就在这个 AS file 上。您是否甚至通过 enterframe 跟踪 Object 的 .rotation 以找到偏移量? 是的,我尝试观看 .rotation 仍然没有运气,因为起初它保持在 0 并移动到其他旋转并继续进行 3 次更新,并且在第 4 次或第 5 次更新时它显示正确的偏移量,所以它不可靠 根据那个 AS file "...如果你想将旋转偏移一定量(以度为单位),你可以定义一个数字,如autoRotate:90" 试试这个,而不是说autoRotate:trueautoRotate: -180 之类的东西可能有效,但现在无法测试...... 【参考方案1】:

如果您想知道初始旋转,为什么不直接在您的 mc 上查看呢?就像在补间中设置 immediateRender:true 然后检查 mc.rotation。或者获取对补间的引用并将其 progress() 更改为您想要的任何内容并检查此时的旋转。此外,您可以通过将 autoRotate 设置为该度数来将旋转偏移任意量。它超级灵活。

【讨论】:

以上是关于为啥开始的 mc 在贝塞尔补间时旋转的主要内容,如果未能解决你的问题,请参考以下文章

在 3d 中沿贝塞尔路径移动对象:旋转问题

把商品添加到购物车的动画效果(贝塞尔曲线)

把商品添加到购物车的动画效果(贝塞尔曲线)

为啥在以下情况下,贝塞尔路径中的 hitTest / tap 检测会产生不准确的结果?

CSS3帧动画

使用三次贝塞尔计时函数,在一些 JS 中随着时间的推移在 CSS 中交错转换元素不透明度,为啥它只工作一次?