2012-07-18 3 views
2

Je rencontre des problèmes pour que ce code fonctionne correctement. Je veux changer le texte sur un champ de texte à l'intérieur d'un bouton. Cela fonctionne, mais seulement pour l'upState. Dès que je souris ou clique sur le bouton, il revient au nom d'origine. Est-il possible de le définir comme anyState?Modification du champ de texte dynamique à l'intérieur du bouton dans as3

var doc:DisplayObjectContainer = m1.upState as DisplayObjectContainer; 
var tf:TextField = doc.getChildAt(1) as TextField; 

var boldText:TextFormat = new TextFormat(); 
boldText.bold = true; 

tf.text = "Sterno Cleido Mastoid"; 
tf.setTextFormat(boldText); 

Exemple: http://www.testdummies.dk/dynamictext.fla

+2

Si vous créez votre bouton dans Flash sur le plan de montage chronologique, essayez de placer votre champ de texte sur son propre calque sans aucune image clé dans les différents états du bouton. – BadFeelingAboutThis

+0

Publiez votre fichier fla pour une meilleure assistance – BadFeelingAboutThis

Répondre

2

Votre problème est que votre code change seulement le texte pour l'état haut du bouton. Les autres états restent inchangés.

Vous pouvez simplement copier et coller votre code pour faire le même changement pour les plus en bas états - en ajoutant ce code après votre code existant feriez simplement que:

doc = m1.overState as DisplayObjectContainer; 
tf = doc.getChildAt(1) as TextField; 
tf.text = "Neck"; 
tf.setTextFormat(boldText); 

doc = m1.downState as DisplayObjectContainer; 
tf = doc.getChildAt(1) as TextField; 
tf.text = "Neck"; 
tf.setTextFormat(boldText); 

C'est une façon maladroite mais à code un changement de texte simple pour un bouton. Créer une classe de boutons personnalisés, ou même faire fonctionner un MovieClip comme un bouton serait beaucoup plus propre. Créez une nouvelle question si vous avez besoin d'aide pour apprendre l'une ou l'autre de ces choses.

+0

Ce que je vais faire est de changer tout le texte du bouton dans une boucle for. J'ai un fichier xml avec des langues différentes et je vais dire à flash quelle langue utiliser via JS. Donc, ce n'est pas vraiment un seul bouton, mais environ 15. Comme dans l'exemple, chaque bouton a une hitbox très spécifique (une forme étrange) et on m'a dit que movieclips ne supporte pas cela. Il me semble que je vais devoir faire du code de copier-coller pour chaque état. – Resin01

+0

Ça fonctionne très bien avec copier coller. Comme j'utilise une boucle for, ce n'est pas beaucoup de code :) Merci – Resin01

0

Je mettrais le champ de texte sur sa propre couche au-dessus du bouton, il a toujours le même texte quel que soit l'état du bouton. Ou, alternativement, vous pouvez copier et coller ce code dans chaque état du bouton, puis modifier le code pour refléter l'état actuel. (la première solution est plus rapide/plus facile cependant)

Questions connexes