greensock tween 找到贝塞尔曲线的结束旋转

greensock tween find end rotation of bezier curve

让我告诉你现在面临的一个场景,我有一个将沿着贝塞尔曲线移动的影片剪辑和一个将开始播放的按钮(影片剪辑将沿着曲线移动)和贝塞尔点,我使用具有自动旋转选项的 greensock,您可以在其中沿路径旋转影片剪辑。

所以我需要知道动画片段在播放结束时的旋转角度,因为当启用自动旋转时,我的旋转角度在开始时将为 0,但到播放结束时会是什么? ???我需要在补间发生之前知道该值,请帮忙!

肯定有一些数学方法可以计算这个,但是你基本上需要重写整个贝塞尔曲线运动逻辑。

一种快速而肮脏的方法是首先将您的影片剪辑 alpha 设置为 0(或创建一个新的空精灵),然后让相同的贝塞尔曲线移动 运行 比方说 0.0001 秒。在 onComplete 中检查最终的动画剪辑旋转并开始实际的补间。我有点老套,但它会起作用 :)

当然,您可以通过数学运算来弄清楚这一切,但让补间处理它并简单地跳到末尾、读取值并再次倒带可能更容易。无需创建持续 0.0001 秒的单独补间并等待 onComplete 或类似的东西 - 只需使用原始补间:

var tween:TweenMax = TweenMax.to(...); //your bezier tween
tween.progress(1); //jump to the end
var endRotation:Number = mc.rotation; //read the final rotation
tween.progress(0); //rewind back to the beginning