我的'微调'动画停止了

时间:2013-08-19 04:15:50

标签: actionscript-3 flash animation loading

我有一个简单的'进步'类来控制我的旋转点和进度条。 问题是我的点有时会在加载组件时停止动画。这是我的代码:

    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;
    }

谢谢:)

2 个答案:

答案 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。这取消了计时器的需要