2010-06-17 1 views
0

Как я могу получить заданные графические свойства спрайта? например, в приведенном ниже коде, я бы хотел получить цвет спрайта, а также настройки закругленных углов и другие графические атрибуты.ActionScript Read Sprite's Graphics?

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

+0

Похоже, что это похоже на сенокулярный подход - http://www.kirupa.com/forum/showpost.php?p=1939945&postcount=176 –