(Flash Professional, AS3)
Я работаю над собственной системой аватаров, в которой вы можете выбирать различные жесты и цвета. Например, у меня есть мувиклип «Волосы», который имеет 10 причесок. Каждый кадр имеет мувиклип с разной прической (HairStyle1, HairStyle2 и т. Д.). У меня также есть ColorPicker, чтобы изменить цвет.
Вот мой код:
var hairColor:ColorTransform;
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform;
hairColor.color = 0xCCCC00;
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor;
Это правильно меняет исходный цвет. У меня есть кнопка «nextHair», чтобы переместить mc_myAvatar.hair к следующему кадру. Когда я нажимаю кнопку, я получаю сообщение об ошибке, в котором говорится, что у меня нулевая ссылка на объект. Я добавил след, и mc_myAvatar.hair.colorLayer является нулевым на кадре 2. Почему ??? Я четко назвал HairStyle2 как «colorLayer» в кадре 2.
Я думаю, что проблема связана со мной, использующим одно и то же имя для разных классов / видеоклипов, но я не знаю, как решить проблему ...
Я добавил квадратный видеоклип под видеоклипами hairStyle, назвал его квадратным «colorLevel» и удалил имя из моих клипов hairStyle. Когда я нажимаю следующую кнопку, квадрат правильно сохраняет цвет от кадра к кадру. Однако наличие квадрата не очень мне помогает. (
Я попытался преобразовать слой hairStyle в маску. Однако это приводит к еще одной ошибке «нулевого объекта» - mc_myAvatar.hair.colorLayer является нулевым после кадра 1. Я даже пытался «охватить» свой colorLevel по всем кадрам (без ключевых кадров), думая, что это даст мне только один мувиклип для работы. Неудачно. Та же ошибка!
Что здесь происходит? Почему я получаю эти нулевые объекты, когда они четко определены в моем мувиклипе?
Я также открыт для предложений о лучшем способе сделать несколько кадров и цветов.