2010-07-01 16 views
0

J'ai ce codeComment puis-je changer la couleur d'une image-objet sans changer la couleur de la bordure?

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

Là où je construis la classe (qui s'étend de sprite). Ensuite, j'ai besoin d'une fonction qui change la couleur de l'image-objet. Actuellement, j'ai ce

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

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

Et cela semble fonctionner, mais cela crée un nouveau rect. Ce que je ne veux pas.

Et j'ai essayé ColorTransform, et ça change tout, même la bordure, ce qui n'est pas ce que je voulais. Et je ne suis pas capable de colortransformer puis de définir la couleur de la bordure.

Alors, comment puis-je changer la couleur d'une image-objet sans changer la couleur de la bordure?

Répondre

0

J'ai trouvé la réponse.

Vous créez deux sprites dans la classe. Le corps et la frontière. Définissez-les individuellement, puis changez la couleur avec la transformation uniquement sur l'image-objet du corps.

est ici le constructeur modifié

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