【发布时间】: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