任何人都可以建议一个有效的旋转功能,可以按需停止吗?

时间:2011-02-12 01:23:37

标签: flex actionscript-3 rotation mxml flash-builder

我有一个mxml饼图,我想在点击按钮之前缓慢旋转,但是点击它需要立即停止(或者至少合理地快速),然后用淡入淡出引入标注标签。 / p>

我已经体验过两种计时器功能来实现这个目标:

protected function group1_creationCompleteHandler(event:FlexEvent):void
        {
            var rt:Timer = new Timer(20,0);
            rt.addEventListener(TimerEvent.TIMER, rtt);

            rt.start()
        }

        private function rtt(event:TimerEvent):void
        {
            QPieSeries.startAngle -=1;
        }

以及callLater变体,它给出了(不出所料)相同的效果:

protected function group1_creationCompleteHandler(event:FlexEvent):void
        {
            rtt();
        }

        private function rtt():void
        {
            QPieSeries.startAngle -=1;
            callLater(rtt);
        }

然而,我的问题是这两种实现这种效果的方法在性能上都非常差,这可以理解为反复发射和接收大量事件。

我一直在尝试使用var rotateVar:Rotate = new Rotate(QPieSeries)方法,但问题就出现了,当我停止它时,标签与未应用QPieSeries.startAngle方法的段不匹配,并且在任何一种循环中应用时,习惯会导致跳跃等并且通常会破坏事物。

我认为我真正想要做的事情(好吧,因为它可能会导致一个可行的解决方案),在定时循环中是某种QPieSeries.startAngle = 60,会有某种插值效应吗?并且在某种定义的时间段内匹配循环的时间段。

然而,这超出了我,如果有人有任何建议/说这个我真的很感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

您应该考虑使用补间库,例如TweenLiteTweener。您可以使用这些参数随时间改变任何对象的任何参数,并且它们可以随时为所有动画使用单个帧/计时器循环。