Как я могу изменить цвет спрайта без изменения цвета рамки? - PullRequest
0 голосов
/ 01 июля 2010

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

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, и это меняет все, даже границу, а это не то, что я хотел.И я не могу colort преобразовать и затем установить цвет границы.

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

1 Ответ

0 голосов
/ 02 июля 2010

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

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

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

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);
}
...