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

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

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

Она не может выдать ошибку, так как она просто проверяет длинну массива слотов анимации. Может быть ошибка выскочила из другого места? Не могли бы привести пример кода
12 июня 2016 19:35
да скорей всего, выскочила из чего то другого, сейчас на примитивах протестил, все норм работает, вообщем у меня около 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
Добрый день.

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


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

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

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

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