我有一个简单的'进步'类来控制我的旋转点和进度条。 问题是我的点有时会在加载组件时停止动画。这是我的代码:
protected static const CONST_DOTS_ANIM_DELAY = 85;
protected var m_tDotsAnimTimer:Timer;
m_tDotsAnimTimer = new Timer( CONST_DOTS_ANIM_DELAY );
m_tDotsAnimTimer.addEventListener(TimerEvent.TIMER, DotsAnimHandler);
public function DotsAnimHandler(event:Event):void
{
mcSpinnerDots["mcFadeDot"+m_nCurrentDot].gotoAndPlay( 2 );
m_nCurrentDot++;
if( m_nCurrentDot == 8 )
{
m_nCurrentDot = 0;
}
}
public function ShowSpinner():void
{
mcSpinnerDots.visible = true;
m_tDotsAnimTimer.start();
visible = true;
}
谢谢:)
答案 0 :(得分:1)
我有一种强烈的感觉,在你的处理程序中,你调用了一个不存在的点,你看不到它,因为你通过[]来调用它。
在处理程序的第一行跟踪trace(mcSpinnerDots["mcFadeDot"+m_nCurrentDot])
,看看它是否返回点的值。
您还可以使用以下代码行优化计数器
m_nCurrentDot = (m_nCurrentDot + 1) % 9; // range from 0 to 8
而不是
m_nCurrentDot++;
if( m_nCurrentDot == 8 )
{
m_nCurrentDot = 0;
}
它会更快,更好看。
希望有所帮助!
答案 1 :(得分:0)
创意魔术有一些很好的建议,但是如果你有一个8点的自行车动画,而不是在舞台上有八个资产并将它们全部分开管理,那么将它们组合成一个mc。这取消了计时器的需要