2009-10-21 7 views
0

Je travaille sur un projet dans Flash en utilisant Action Script 3.0. J'ai converti un graphique en un bouton afin de pouvoir l'utiliser pour divers boutons tout au long de mon projet, mais je n'arrive pas à comprendre comment modifier uniquement l'instance du nouveau bouton sur la scène sans modifier la classe entière. Par exemple, si mon premier bouton a un nom d'occurrence unique et s'appelle "Click Me" et que je tire une autre instance de ce bouton sur la scène et que j'essaie de lui donner un nouveau nom d'instance puis de le réécrire modifie automatiquement le bouton "Click Me" pour dire "Next" également. Quelqu'un peut-il m'aider pour que je n'aie pas besoin de créer une nouvelle classe pour chaque bouton que je crée?Modifier un bouton dans Action Script 3.0

Répondre

0

Ce comportement est normal. Le bouton que vous créez dans votre bibliothèque n'est pas une instance. Lorsque vous le faites glisser sur la scène, vous créez l'instance, mais si vous changez quelque chose, par exemple en remplaçant un champ de texte, vous changez la classe.

Une façon d'obtenir ce que vous voulez est de créer un MovieClip au lieu d'un bouton. Puis dans votre MovieClip ajouter un champ de texte dynamique à l'intérieur. Sur toutes vos instances MovieClip (assurez-vous qu'il a un nom si votre glisser de la bibliothèque à l'étape), ajoutez le code suivant:

myBtn1.buttonMode = true; 
myBtn2.buttonMode = true; 

Maintenant, pour chaque instance que vous pouvez changer le champ de texte en faisant cela en supposant que le champ de texte dynamique à l'intérieur le clip est appelé txtLabel:

myBtn1.txtLabel.text = "hello"; 
myBtn2.txtLabel.text = "world"; 

Si vous voulez rouler sur les états alors vous pouvez le faire, tout d'abord ajouter une image clé pour chaque état dans le MovieClip, faites sur une couche séparée underthe textfield et leur donner une étiquette d'image pour chaque section:

myBtn1.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver) 

function onMouseOver(e:MouseEvent) 
{ 
    myBtn1.gotoAndStop("OVER_STATE"); 
//can use e.target.gotoAndStop("OVER_STATE") instead so that you can reuse the one 
//function for all buttons. The above is just to illustrate the point. 
} 

Alternativement, il peut être possible de simplement étendre la classe SimpleButton, puis d'ajouter une propriété pour modifier un champ de texte dynamique que vous créez à l'intérieur.

Questions connexes