2012-04-24 3 views
0

У меня есть персонаж с различными частями тела: волосы, голова, тело, оружие, ноги. Я анимировал персонажа анимацией прогулок и анимацией стенда. Я дал волосам персонажа имя экземпляра волос в каждой из этих анимаций, чтобы я мог получить доступ к нему через AS3. Предположим, у меня есть другой мувиклип, который является статическим изображением другого типа волос. Я хочу, чтобы волосы персонажа меняли волосы, используя AS3.AS3: Изменение детей MovieClip анимационного мувиклипа через AS3

экземпляры: модель = анимация мувиклип внутри держатель мувиклип. волосы = дети модели, но анимированные

Классы: Anim = держатель мувиклип (для изменения точки отсчета и изменение размеров) Hair2 Я хочу изменить волосы к экземпляру Hair2

anim.model. hair = new Hair2();

Когда я его отслеживаю, он показывает, что объект был изменен, но он не изменяется на дисплее. Я использую AS3IsoLib так вот пример код:

var anim = new Anim(); 
var hair2 = new Hair2(); 
anim.model.hair = hair2; 
sprites = [anim]; 

Я проверил масштабирование волос и что работает нормально, но не заменяет сам экземпляр.

Мне было интересно, как я могу это сделать. Если вы играли в некоторые MMO-игры, у пользователя есть возможность изменить его или ее части тела. Примером может служить Adventure Quest Worlds. Это тот эффект, который я хочу достичь.

ответ

0

Синтаксис AS2 довольно запутанный: настройка anim.model.hair ничего не значит. Вот как вы должны написать это:

//keep a reference for the previous hair 
var previousHair:MovieClip = anim.model.hair; 
//copy position, rotation, scale 
hair2.transform.matrix = previousHair.transform.matrix.clone(); 
//remove the previous hair from model 
anim.model.removeChild(previousHair); 
//put the new hair in place 
anim.model.addChild(hair2); 
//give a new instance name to hair2 so you can access it through anim.model.hair 
hair2.name = "hair"; 
+0

Это будет работать, если hair2 был ребенком уже анимации, которую я назвал модель экземпляра. Однако это не сработает, если я создаю экземпляр класса hair2, у которого нет ссылки на анимацию, кроме того, что это полностью отдельный мувиклип. –

+0

Что происходит? Чего не хватает? Что ожидается? – Kodiak

+0

Согласен. Это решение должно работать в общем случае. Если это не делает трюк, вам может потребоваться опубликовать больше кода. Похоже, что 'hair1' может быть загружен дважды, если' hair1' все еще там; или если 'hair2' не появляется, это может быть не видно, это может быть пустой MovieClip, он может быть установлен неправильно и т. д. – iND

Смежные вопросы