2013-08-19 5 views
0

У меня есть простой класс «Прогресс», который контролирует мои вращающиеся точки и индикатор выполнения. Проблема в том, что мои точки иногда останавливают анимацию во время загрузки моих компонентов. Вот мой код:Остановка анимации «spinner»

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

С Спасибо :)

ответ

1

У меня есть стойкое ощущение, что на вашем обработчике вы звоните в несуществующую точку, и вы не можете увидеть это хорошо, потому что вы это называете, хотя [ ].

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

Это будет как работать быстрее и выглядеть лучше.

Надеюсь, что это поможет!

+0

Просто потому, что его редко учат в классах или учебниках, я хотел бы добавить, что оптимизация (n% t) называется модулем и является очень быстрым способом поиска слева –

0

У творческой магии есть несколько хороших предложений, но если у вас есть анимация на велосипеде с 8 точками, вместо того, чтобы иметь восемь предметов на сцене и вытеснить их отдельно, сделайте их в один мкс. Это отменяет необходимость таймера