如何在不改变边框颜色的情况下更改精灵的颜色?

时间:2010-07-01 13:02:36

标签: actionscript-3 colors border sprite

我有这段代码

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

我构造类(从sprite扩展)。然后我需要一个改变精灵颜色的函数。目前我有这个

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,这会改变一切,甚至边界,这不是我想要的。而且我无法进行colortransform然后设置边框颜色。

那么如何在不改变边框颜色的情况下更改精灵的颜色呢?

1 个答案:

答案 0 :(得分:0)

我找到了答案。

你在课堂上创建了两个精灵。身体和边界。单独设置,然后仅使用body sprite转换颜色。

这是修改后的构造函数

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