2010-01-19 46 views
3

在方法Graphics.lineStyle()中,您傳遞了al​​pha作爲第三個參數。我不想改變前兩個參數的厚度或顏色,所以有什麼辦法可以改變阿爾法?或至少「獲得」厚度和顏色,所以我可以重新通過他們,所以他們不會改變?AS3:Graphics.lineStyle() - 僅更改ALPHA?

謝謝!

+0

你繼承的東西,你沒有源代碼?我問,因爲通常*你*設置阿爾法,厚度等,所以你可以緩存這些值 – jedierikb 2010-01-19 17:27:37

+0

是的我擴展了一個類傳遞一個Graphics對象來繪製,已經有一個lineStyle設置。我只想改變alpha。 – 2010-01-19 17:35:22

回答

2

一種選擇是將您正在傳遞的圖形對象封裝起來,併爲各個屬性添加getter和setter,否則這些屬性只能用作參數。

僞代碼:

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