Проблемы с анимацией в обратном направлении
06 октября 2016 11:42
Доброго времени суток! есть 3д модель из кучи мелких деталей с анимацией, не могу понять почему не работает анимация в обратном направлении, создал тестово кнопку "revers", если запустить анимацию и затем нажать на кнопку "revers" то она вроде как работает в обратном направлении, но как то слишком быстро и неправильно, подскажите в чем может быть проблема ?
тут около 300 объектов, сначала получаю все имена объектов , проверяю на анимацию и запускаю анимацию, реверсивную анимацию сделал изменив скорость на -1
вот ссылка на сам проект http://vellift.ru/anim-sgr-10_11/
вот код:
тут около 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);
});