Проблемы с анимацией в обратном направлении

06 октября 2016 11:42
Доброго времени суток! есть 3д модель из кучи мелких деталей с анимацией, не могу понять почему не работает анимация в обратном направлении, создал тестово кнопку "revers", если запустить анимацию и затем нажать на кнопку "revers" то она вроде как работает в обратном направлении, но как то слишком быстро и неправильно, подскажите в чем может быть проблема ?
тут около 300 объектов, сначала получаю все имена объектов , проверяю на анимацию и запускаю анимацию, реверсивную анимацию сделал изменив скорость на -1
вот ссылка на сам проект http://vellift.ru/anim-sgr-10_11/
вот код:
function play_anim(_frame,speed) {
    clearInterval(_timerId);
        _timerId = setInterval(function() {
            $('.clock').text(parseInt($('.clock').text())+1);
            $('#time').val(parseInt($('#time').val())+24);
            
            if (parseInt($('.clock').text())>=80) {
                setTimeout(function() {
                clearInterval(_timerId);
                $('.clock').text(80);
                $('#time').val(1800);
              }, 0); 
            }
          }, 1000);
        setTimeout(function() {
         clearInterval(_timerId);
         $('.clock').text(0);
       }, 100000);  

 
    $('.button_container:nth-child(2)').css("display","block");
    $('.button_container:nth-child(1)').css("display","none");
    
   var mas = m_scs.get_all_objects("ALL",m_obj.DATA_ID_ALL);

    var mas_name = [];
    var lok = 1;
    for (var key in mas) {
        mas_name[lok] = mas[key].name
        lok++;
        if (mas[key].type == 'LAMP' || mas[key].type == 'WORLD' || mas[key].type == 'EMPTY') {
            
        }else{

                
            
            var obj = m_scs.get_object_by_name(mas[key].name);//имя объекта
            var amima = m_anim.is_animated(obj);
           

            if ($.isEmptyObject(mas[key].actions)) {
             
            }else{
                var action = mas[key].actions[0].name;//актион объекта
                if (obj) {
                    if (_add_anim == 0) {
                        m_anim.apply(obj,action);
                        
                    
                        m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
                        if (!_anim_playing_ob) {
                            
                            m_anim.play(obj,function(){
                                _anim_playing_ob = false;
                              
                                _anim_get_frame = m_anim.get_frame(obj);
                               m_anim.set_frame (obj, _anim_get_frame);
                                });
                    
                        }
                       
                    }else{
                        if (parseInt(_frame) != 1 && typeof(_frame) == "string") {
                            var anim_lenght = m_anim.get_anim_length(obj);
                            if (parseInt(_frame) >= parseInt(anim_lenght)) {
                                m_anim.set_last_frame (obj);
                            }else{
                                m_anim.set_frame (obj,parseInt(_frame));
                            }
                        }
                       
                    
                        m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
                        if (!_anim_playing_ob) {
                            m_anim.set_speed(obj, speed);
                            //console.log(anim_speed);
                            m_anim.play(obj,function(){
                                _anim_playing_ob = false;
                                //anim_speed *= -1;
                                _anim_get_frame = m_anim.get_frame(obj);
                               m_anim.set_frame (obj, _anim_get_frame);
                                });
                    
                        }
                    }
                }
            }                                    
        }
    }
    console.log(mas_name);
     _add_anim = 1;/*добавили к объектам анимацию и можно с ними уже работать*/
}
$('#play').click(function(_frame){
        var speed = 1;
        play_anim(_frame,speed);
});
$('#revers').click(function(_frame){
        var speed = -1;
        play_anim(_frame,speed);
});
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.