0

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

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

感谢:)

4

2 回答 2

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

它既会工作得更快,也会看起来更好。

希望有帮助!

于 2013-08-19T05:34:49.417 回答
0

creative magic 有一些不错的建议,但是如果你有一个 8 个点的循环动画,而不是在舞台上拥有 8 个资产并分别管理它们,而是将它们变成一个 mc。这取消了对计时器的需要

于 2013-08-19T12:51:42.693 回答