Вопрос

(Flash Professional, AS3)

Я работаю над индивидуальной аватарской системой, где вы можете выбрать различные фестивалы и цвета. Например, у меня есть «волосы», в котором есть 10 причесок. Каждая рама имеет перемещение различной прически (Hairstyle1, Hairstyle2 и т. Д.). У меня также есть цветовой писатель, чтобы изменить цвет.

Вот мой код:

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 - NULL на кадре 2. Почему ??? Я явно назвал Hairstyle2 как «Colorlayer» в кадре 2.

Я думаю, что проблема связана со мной, используя одно и то же имя для разных классов/движений, но я не знаю, как решить проблему ...

Я добавил квадратный Movieclip под моими прическами Moveieclips, названный квадратным «Colorlevel», и удалил имя из моих зажимов для прически. Когда я нажимаю кнопку «Следующая», квадрат правильно поддерживает цвет от кадра до кадра. Тем не менее, наличие квадрата мне не очень хорошо приносит. :(

Я попытался преобразовать слой прически в маску. Делая это, однако, что приводит к еще одной ошибке «нулевого объекта» - mc_myavatar.hair.colorlayer is null после кадра 1. Я даже попробовал «охватить» мой цветовой ветер во всех кадрах (без ключа), думая, что это даст мне только один MoveieClip для работы. Неудачно. Та же ошибка!

Что тут происходит? Почему я получаю эти нулевые объекты, когда они четко определены в моем движении?

Я также открыт для предложений по лучшему способу сделать несколько кадров и цветов.

Это было полезно?

Решение

function miClick(e:MouseEvent) {
    content.gotoAndStop(e.currentTarget.parent.name);

    if(e.currentTarget.parent.name == "2") {
        content.addEventListener(Event.EXIT_FRAME, this.hdExitFrame);
        productMenu.alpha = 1;
        trace(content.products);
    } else {
        productMenu.alpha = 0;
    }
}

function hdExitFrame(e:Event) {
    trace(e.target.currentFrame + ", " + e.target.products);
    content.removeEventListener(Event.EXIT_FRAME, this.hdExitFrame);
}

Я проверил это, Content.Products является NULL в Miclick, однако, в HdexitFrame, это не было. Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top