2010-06-17 59 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