Как я могу изменить цвет спрайта, не меняя цвет границы?

у меня есть этот код

public function TalentBox(x:int, y:int, arg_color:int = 0xFFFFFF):void
{
    this.graphics.beginFill(arg_color);
    this.graphics.lineStyle(1.0, 0x000000, 0.7);
    this.graphics.drawRect(0, 0, 7, 13);
    this.alpha = 1.0;
    this.x = x;
    this.y = y;
    this.graphics.endFill();
}

Где я создаю класс (который расширяется от спрайта). Затем мне нужна функция, которая меняет цвет спрайта. В настоящее время у меня есть это

public function setColor(arg_color:int):void
{
    color = arg_color;

    this.graphics.beginFill(color);
    this.graphics.drawRect(0, 0, 7, 13);
    this.graphics.endFill();
}

И кажется, что это работает, но это создает новый прямоугольник. Чего я не хочу.

И я попробовал ColorTransform, и это меняет все, даже границу, а это не то, что я хотел. И я не могу преобразовать цвет, а затем установить цвет границы.

Итак, как я могу изменить цвет спрайта, не меняя цвет границы?


person Ólafur Waage    schedule 01.07.2010    source источник


Ответы (1)


Я нашел ответ.

Вы создаете два спрайта в классе. Тело и граница. Установите их индивидуально, а затем измените цвет с помощью преобразования только на спрайте тела.

Вот модифицированный конструктор

public function TalentBox(x:int, y:int, arg_color:int = 0xFFFFFF):void
{
    body.graphics.beginFill(arg_color);
    body.graphics.drawRect(x + 1, y + 1, 6, 12);
    body.graphics.endFill();

    border.graphics.beginFill(0xFFFFFF);
    border.graphics.lineStyle(1.0, 0x000000, 0.7);
    border.graphics.drawRect(x, y, 7, 13);
    border.graphics.endFill();

    this.addChild(border);
    this.addChild(body);
}
person Ólafur Waage    schedule 02.07.2010