我有一个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,以及某种插值效果?并且在某种定义的时间段上与循环的时间段相匹配。
然而,这超出了我的能力范围,如果有人对此有任何建议/意见,我将不胜感激。
谢谢!
发布于 2011-02-12 17:41:19
您应该考虑使用补间类库,如TweenLite或Tweener。您可以使用它们随时间改变任何对象的任何参数,并且它们在任何时间对所有动画使用单个帧/计时器循环。
https://stackoverflow.com/questions/4975690
复制相似问题