Я создаю марионетку для анимации, которую делаю. Я создал два пользовательских класса, которые наследуются от класса MovieClip. Один — голова, которую я анимирую, обращенная к камере, а другой — вид 3/4 той же головы. Я изменил оба конструктора, чтобы добавить прослушиватель событий, который вызывает функцию facRig
, которая помогает мне анимировать головы, вызывая другие функции, такие как moveEyes(), moveMouth()
и т. д.
public function _F__MichaelFULLHEAD() {
super();
faceRig("OverLoad"); //<--bug workaround
this.gotoAndPlay(MovieClip(root).currentFrame); //Sync movieclips with timeline
addEventListener(Event.ENTER_FRAME,faceRig);
}
Однако функция всегда вызывается через один кадр после появления MovieClip
на временной шкале. Эта задержка делает анимацию невозможной, потому что мне приходится постоянно переключаться между видом спереди и видом 3/4 (я переключаюсь, создавая новый ключевой кадр на временной шкале и перетаскивая символ из библиотеки). Каждый раз, когда я переключаюсь, есть один кадр, где рот не говорит, а глаза не двигаются.
«Обходной путь» решает проблему. Теперь, когда в первый раз какая-либо голова появляется на сцене, она сразу же начинает анимироваться, но если я переключаюсь с вида спереди на вид 3/4 обратно на вид спереди, вид спереди снова задерживается.
Я подозревал, что это может быть связано с тем, что конструктор больше не запускается, поэтому я попытался сделать каждый экземпляр головок уникальным, назвав их frontHead1
и frontHead2
в поле свойств объекта, однако это совсем не помогло.