2010-06-17 33 views
0

我如何檢索精靈的設置圖形屬性?例如,在下面的代碼中,我想獲取精靈的顏色,也是圓角設置和其他圖形屬性。ActionScript讀取Sprite的圖形?

var sp:Sprite = new Sprite(); 
sp.graphics.beginFill(0xFF0000, 0.75); 
sp.graphics.drawRoundRect(0, 0, 300, 50, 10, 10); 
sp.graphics.endFill(); 

addChild(sp); 
trace(sp.graphics.color); //pseudo trace - this doesn't work 

回答

1

我幾乎可以肯定,這是不可能的。但是,還有其他方法可以做到這一點。如何爲每個存儲使用值的屬性設置一個valueObject。然後,您可以擁有一個GraphicalDisplayObject,您可以從中繼承或通過組合使用它。例如:

package { 
    class FillVO extends Object { 
     public var fill_color:Number = 0xFF0000; 
     public var fill_opacity:Number = 0.75; 
    } 
} 

package { 
    import FillVO; 
    class GraphicalDisplayObject extends Sprite { 
     public var fill_vo:FillVO; 
     public function beginFill($vo:FillVO) { 
      graphics.beginFill($vo.fill_color, $vo.fill_opacity); 
     } 
     ... 
    } 
} 

package { 
    import GraphicalDisplayObject; 
    class ObjectWithGraphicalProperties extends Sprite { 
     public var gfx:GraphicalDisplayObject; 
     public function ObjectWithGraphicalProperties() { 
      gfx = new GraphicalDisplayObject(); 
      addChild(gfx); 
     } 
     public function beginFill($color:Number, $opactity:Number) { 
      var fill_vo:FillVO = new FillVO(); 
      fill_vo.fill_color = $color; 
      fill_vo.fill_opacity = $opacity; 
      gfx.beginFill(fill_vo); 
     } 
     ... 
    } 
} 

然後使用它...

var obj:ObjectWithGraphicalProperties = new ObjectWithGraphicalProperties(); 
addChild(obj); 
obj.beginFill(0xffff00, .2); 
... 
... 
trace(obj.gfx.fill_vo.fill_color); 

這顯然是通過成分,你需要編寫額外的代理方法和相應的valueObjects ......但它應該工作。

+0

有趣的解決方法。謝謝:) – TheDarkIn1978 2010-06-17 16:20:16

+0

看起來像是與senocular的方法「相似」 - http://www.kirupa.com/forum/showpost.php?p=1939945&postcount=176 – 2010-06-18 00:18:31