2010-06-17 7 views
0

Comment puis-je récupérer les propriétés graphiques d'un sprite? Par exemple, dans le code ci-dessous, j'aimerais obtenir la couleur de l'image-objet, ainsi que ses paramètres de coins arrondis et d'autres attributs graphiques.ActionScript Lire les graphiques de 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 

Répondre

1

Je suis presque certain que ce n'est pas possible. Cependant, il existe certainement d'autres moyens de le faire. Qu'en est-il d'avoir un valueObject pour chaque propriété qui stocke les valeurs utilisées. Vous pourriez alors avoir un GraphicalDisplayObject dont vous héritez ou que vous utilisez via la composition. Par exemple:

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

ensuite l'utiliser ...

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

Ceci est évidemment par la composition, et vous auriez besoin d'écrire les méthodes proxied supplémentaires et valueObjects correspondantes ... mais il devrait fonctionner .

+0

solution de contournement intéressante. merci :) – TheDarkIn1978

+0

On dirait que c'est "similaire" à l'approche du Sénoculaire - http://www.kirupa.com/forum/showpost.php?p=1939945&postcount=176 –

Questions connexes