CreateJS / AnimateCC Итерировать дочерние элементы библиотеки MovieClip

Я создал символ MovieClip в AnimateCC, который состоит из других символов MovieClip. Я хочу перебрать дочерние элементы родительского MovieClip во время выполнения, чтобы изменить некоторые свойства дочерних символов. Я подумал, что будет легко использовать что-то вроде: -

for (var i= 0; i < this.MyThing.getNumChildren(); i++) {
    var child = this.MyThing.getChildAt(i);
    // then amend child properties
}

Но это не работает. Когда я смотрю в файл js, кажется, что дети добавляются как свойства экземпляра, например.

this.T1 = new lib.Thing1();

а не так, как вы обычно добавляете детей, например: -

var PA = new lib.Thing1();
this.ParentThing.addChild(PA);

Итак, есть ли способ получить доступ к дочерним объектам динамически во время выполнения, перебирая дочерние объекты, а не жестко кодируя имена дочерних MovieClips?


person Jonsij    schedule 19.05.2016    source источник


Ответы (1)


В Animate возникла ошибка, когда Adobe изменила все однокадровые временные шкалы с контейнеров на MovieClips, а дочерние элементы не доступны сразу. Дочерние элементы MovieClips добавляются на временную шкалу через временные шкалы Tween. В конструкторе должен быть вызов addChild, но его нет.

Вы можете обойти это, вызвав gotoAndStop(0) и затем перебирая дочерние элементы.

this.gotoAndStop(0);
console.log(this.children);

Надеюсь, что это решит вашу проблему. Надеюсь, эта проблема будет решена в следующем выпуске Adobe Animate.

person Lanny    schedule 20.05.2016
comment
Ага! Спасибо за это. - person Jonsij; 23.05.2016