2010-02-03 6 views
0

Je suis un peu confus. J'ai fait un symbole de bouton et j'ai mis un textbox appelé "butLabel". ce bouton est encapsulé dans un autre MovieClip appelé MainMenu. cbegin est le nom de l'instance que j'ai donné au bouton. Si je trace comme ça ....malentendu des boutons et des champs de texte

trace(menu.cbegin); 

Il reconnaît cbegin est un bouton. mais si je le trace comme ceci

trace(menu.cbegin.butLabel); 

il est dit que butLabel est null. Ci-dessous, comment je l'appelle dans le menu movieclip

var menu = new MainMenu(); 
trace(menu.cbegin.butLabel); 
menu.x = sr.stageWidth/2; 
menu.y = sr.stageHeight/2; 

Encore une fois, les œuvres de bouton, mais l'étiquette à l'intérieur du bouton ne marche pas. textfield est défini sur dynamique et j'ai copié et collé le nom qui se trouvait dans le champ du nom d'instance dans mon code. donc ils doivent être identiques. J'ai également tapé le bouton de mot dans le champ de texte par défaut de la bibliothèque, et il semble fonctionner très bien mais si je change le champ de texte par l'intermédiaire du code, cela ne fonctionne pas. Des suggestions quant à ce qui se passe ?? Merci!

+0

Pouvez-vous s'il vous plaît fournir plus de code à tester? –

+0

Avez-vous essayé 'menu.butLabel'? –

Répondre

1

Voici ce que vous pouvez faire, c'est une sorte de hackish.

REMARQUE: Cela suppose que le TextField est sur la 2ème couche (c.-à-getChildAt(1).), Au-dessus de la couche initiale créée lorsque vous effectuez un SimpleButton.

var menu:MainMenu = new MainMenu(); 
addChild(menu); 

var upStateContainer:DisplayObjectContainer = menu.cbegin.upState as DisplayObjectContainer; 
var butLableUp:TextField = upStateContainer.getChildAt(1) as TextField; 
butLableUp.text = "Up State"; 

ou comme une doublure:

((menu.cbegin.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = "UP State"; 

Explication: Lorsque le flash est compilé à partir de l'IDE Flash, toutes les instances de SimpleButton, et leurs enfants, sont convertis en leurs types d'affichage de base , comme les Sprites. Même si vous avez un champ de texte sur un calque sur les états de bouton qui s'étendent sur les quatre cadres, un champ de texte sera généré pour chacun des trois états de bouton visibles. Le nom d'instance du champ de texte n'a même pas d'importance et n'est jamais utilisé.

+0

Je ne comprends pas exactement ce que vous avez dit Mais ça marche! Ce que vous semblez dire, c'est que pendant la compilation, tous les objets contenant des objets simplesBouton se transforment en displayObjectContainers. Quels sont les objets d'affichage qui sont assez ratés (c'est-à-dire des objets d'affichage vides légers). par conséquent, il perd ses propriétés telles que le texte. par conséquent, c'est pourquoi cela n'a pas fonctionné. nous avons juste pris et casté l'objet à un champ de texte? Est-ce seulement pour SimpleButtons ?? et merci beaucoup! – numerical25

Questions connexes