为啥开始的 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
事件编写自己的补间函数。如果我很懒,我会使用 Caurina 或 BtweenAS3,因为我个人喜欢这些。我建议您在等待答案时尝试一个合乎逻辑的事情,但是如果它“轻弹”那对我来说是不合逻辑的,我会让您遭受该系统的痛苦...我查看了源代码您需要的线索就在这个 AS file 上。您是否甚至通过 enterframe 跟踪 Object 的 .rotation
以找到偏移量?
是的,我尝试观看 .rotation
仍然没有运气,因为起初它保持在 0 并移动到其他旋转并继续进行 3 次更新,并且在第 4 次或第 5 次更新时它显示正确的偏移量,所以它不可靠
根据那个 AS file "...如果你想将旋转偏移一定量(以度为单位),你可以定义一个数字,如autoRotate:90
" 试试这个,而不是说autoRotate:true
。 autoRotate: -180
之类的东西可能有效,但现在无法测试......
【参考方案1】:
如果您想知道初始旋转,为什么不直接在您的 mc 上查看呢?就像在补间中设置 immediateRender:true 然后检查 mc.rotation。或者获取对补间的引用并将其 progress() 更改为您想要的任何内容并检查此时的旋转。此外,您可以通过将 autoRotate 设置为该度数来将旋转偏移任意量。它超级灵活。
【讨论】:
以上是关于为啥开始的 mc 在贝塞尔补间时旋转的主要内容,如果未能解决你的问题,请参考以下文章