【问题标题】:Can anyone suggest a move efficient rotation function which can be stopped on demand?谁能建议一个可以按需停止的移动高效旋转功能?
【发布时间】:2011-02-12 01:23:37
【问题描述】:

我有一个 mxml 饼图,我想在单击按钮之前缓慢旋转它,但是在单击时它需要立即停止(或至少相当快),然后标注标签以淡入淡出引入。

我已经尝试了两个计时器功能来实现这一点:

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 在一个定时循环中,并具有某种插值效果吗?并在某种定义的时间段内匹配循环的时间段。

但这超出了我的范围,如果有人对此有任何建议/意见,我将不胜感激。

谢谢!

【问题讨论】:

  • 您不使用Event.ENTER_FRAME 有什么原因吗?无论如何,那是你唯一一次重绘。
  • 另外,你用的是什么版本的 flex?
  • Event.ENTER_FRAME 听起来很有趣,我会在有机会时尝试一下,尽管我不确定它是否会提供我正在寻找的改进... Greensock I think 听起来也不错。谢谢

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    相关资源
    最近更新 更多