2010-01-19 4 views
3

Dans la méthode Graphics.lineStyle(), vous passez l'alpha comme troisième paramètre. Je ne veux pas changer l'épaisseur ou la couleur qui sont les 2 premiers paramètres, donc est-ce que je peux juste changer l'alpha? ou au moins "obtenir" l'épaisseur et la couleur afin que je puisse les repasser pour qu'ils ne changent pas?AS3: Graphics.lineStyle() - Changer ALPHA seulement?

Merci!

+0

Êtes-vous quelque chose que vous ne le sous-classement avez pas le code source? Je demande parce que normalement * vous * définissez l'alpha, l'épaisseur, etc afin que vous puissiez mettre en cache ces valeurs – jedierikb

+0

Oui, je suis étendu une classe qui obtient un objet Graphics sur lequel dessiner, qui a déjà un ensemble lineStyle. Je veux changer l'alpha seulement. –

Répondre

2

Une option consisterait à envelopper l'objet graphique que vous transmettez et à ajouter des getters et des setters pour des propriétés individuelles qui ne sont autrement disponibles qu'en tant que paramètres.

Pseudo-code:

public class CustomGraphics 
{ 
    // -- here is the wrapped graphics object 
    protected var _graphics:Graphics; 

    // -- unique properties for line style 
    protected var _lineColor:uint; 
    protected var _lineThickness:int; 
    protected var _lineAlpha:Number; 

    public function CustomGraphics(gfx:Graphics) 
    { 
      _graphics = gfx; 
      _lineColor = 0; 
      _lineThickness = 1; 
      _lineAlpha = 1; 

      draw(); 
    } 

    public function set lineAlpha(value:Number):void 
    { 
     if(_lineAlpha != value) { 
      _lineAlpha = value; 
      // -- insert code to redraw or invalidate here 
      draw(); 
     } 
    } 

    public function draw():void { 
     _graphics.setLineStyle(_lineThickness, _lineColor, _lineAlpha); 
    } 
}