Проверить action объекта

08 июня 2016 18:42 #10018
Как можно проверить есть у объекта анимация или нет ? m_anim.is-animated(obj) ? у меня возникает ошибка нет SLOT
09 июня 2016 09:59 #10021
Добрый день.

Да, эта именно та функция, которая вам нужна.
Проверил сейчас эту функцию для анимированных и не анимарованных объектов, всё нормально.
m_anim.is_animated(obj)

Она не может выдать ошибку, так как она просто проверяет длинну массива слотов анимации. Может быть ошибка выскочила из другого места? Не могли бы привести пример кода
Разработчик Blend4Web
12 июня 2016 19:35 #10067
да скорей всего, выскочила из чего то другого, сейчас на примитивах протестил, все норм работает, вообщем у меня около 200-300 объектов, большинству назначена анимация, и галочка стандартной анимации в блендер выключена, т.е через скрипт приходится выводить в цикле все объекты текущей сцены, затем выводить имена action и применять анимацию через

if (obj) {
m_anim.apply(obj,action);
m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
}
m_anim.play(obj,function(){
_anim_playing_ob = false;
anim_speed *= -1;
m_anim.set_speed(obj, anim_speed);
});

Анимация запускается, но для первых 18 объектов, у 19 объекта отсутствует анимация, смотрел объект в консоли, у этого объекта пустой action, в цикле на 19 итерации возникает ошибка "Cannot read property 'name' of undefined" и анимация останавливается.

вывожу имя action следующим образом:
var action = mas[key].actions[0].name;

где mas - это массив всех объектов сцены

получается мне нужно проверять как то если у объекта свой actions не имеет имя или пусто, то ничего не делать, иначе запускать анимацию, но вот тут опять непонятно


в консоли выводится массив объектов, и внутри каждого объекта свойства а эти свойства содержат в себе еще объекты оО

продскажите как проверить пустоту actions Или мб метод какой то есть
14 июня 2016 09:59 #10071
Добрый день.

Когда вы вызываете
m_anim.apply(obj,action);


На объекте заполняется массив anim_slots, если вы не передали третий параметр в m_anim.apply, то по умолчанию action запишется в нулевой индекс (этот индекс также называется слот анимации).

Функция
m_anim.is_animated(obj,action);

как раз и проверяет длинну этого массива, то есть если action был применён, то она вернёт true

Если у вас возникли проблемы, то можете прикрепить ваш проект к сообщению (или любой простой пример, где воспроизводится подобное неочевидное поведение) я могу посмотреть в чём дело
Разработчик Blend4Web
27 июня 2016 11:41 #10235
Спасибо, уже все получилось
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.