2010-09-18 6 views
0

Ok, je ne sais pas pourquoi cela se produit.Objet Sprite dynamiquement fait a marge/remplissage sur le fond

Je suis créé une classe Item qui étend la classe Sprite, la classe Item a essentiellement quelques labels & en ce moment.

Ensuite, ce que j'essaie de faire est de parcourir une boucle d'objets et de créer des classes d'objets que je veux placer les uns après les autres sur l'axe des y, donc je lis la propriété Item.height pour trouver le y de l'article suivant dans la liste. Le problème est pour une raison quelconque, il y a toujours 75 pixels supplémentaires ajoutés à la hauteur Sprite en bas, peu importe combien de coches et d'étiquettes sont dans chaque classe d'article (en variant la hauteur de la classe d'objet).

Aucune idée pourquoi ce produit est ajouté et comment il peut être retiré? Je n'arrive pas à comprendre cela, j'ai essayé de calculer dynamiquement et de définir la propriété Item.height mais quand je fais cela, le Sprite est simplement recadré.

Répondre

1

Il faut une ou deux images jusqu'à ce que la taille d'un composant d'interface utilisateur soit correctement définie (la hauteur par défaut est 100 pixels).

Pour éviter ce comportement, appelez validateNow() sur chaque composant Flash UI que vous ajoutez.

var s:Sprite = new Sprite(); 
var label:Label = new Label(); 
label.text = "hello"; 
label.x = 0; 
s.addChild(label); 
var check:CheckBox = new CheckBox(); 
check.label = "hello"; 
check.x = 50; 
s.addChild(check); 
addChild(s); 
trace(s.height); // output: 100 

label.validateNow(); 
check.validateNow(); 
trace(s.height); // output: 28 
+0

Merci, c'est le genre de choses que vous gagnez avec l'expérience. –