2009-03-13 8 views
0

Je voudrais ajouter un "simple" Sprite dans un flex Canvas. I'am faire ceci:Flex3 Canvas, ScrollBar

var uic:UIComponent=new UIComponent; 
var s:Sprite=new Sprite(); //<-- my simple Sprite 
uic.addChild(s); 

myCanvas.addChild(uic); 

Le Sprite est correctement ajouté au Canvas, mais maintenant, je dois activer le Canvas ScrollBar en fonction de la taille Sprite. (Les Canvas ont une taille fixe)

Toutes les idées Wellcome,

Merci

Répondre

4

Le problème que vous avez découvert est que UIComponent plaine ne présente pas une largeur ou de la valeur de la hauteur à son parent (parce qu'il suffit ne sait pas ce que cette valeur devrait être!).

Si vous devez utiliser des sprites simples et d'autres objets d'affichage primitifs dans Flex, je vous recommande de créer une sous-classe de UIComponent avec un remplacement de la fonction measure(). Dans là, définissez les propriétés measuredWidth et measuredHeight à la taille des enfants de UIComponent.

Ceci est un rapide (et non testé) solution que vous pourriez vouloir essayer (dans votre sous-classe UIComponent qui remplacera la UIComponent ordinaire):

override protected function measure():void 
{ 
    super.measure(); 

    for(var i:int = 0; i < this.numChildren; i++) 
    { 
     var child:DisplayObject = this.getChildAt(i); 
     this.measuredWidth = Math.max(this.measuredWidth, child.x + child.width); 
     this.measuredHeight = Math.max(this.measuredHeight, child.y + child.height); 
    } 
} 

Personnellement, lorsque cela est possible, j'essaie de faire tout le contenu approprié sous-classes de UIComponent plutôt que de créer des hacks comme celui-ci pour faire fonctionner Sprite ou d'autres types non-UIComponent dans les conteneurs de Flex. Cependant, votre approche semble être très commune, donc j'espère que cela vous sera utile et à d'autres.

+0

merci, c'est exactement ce dont j'ai besoin:) – OXMO456