2009-12-07 3 views
0

Je souhaite créer un bouton qui redimensionne dynamiquement le contenu. Pour ce faire, j'ai créé un MovieClip dans la bibliothèque et y ai ajouté quatre couches: - text, bg, shadow et border. Le problème que j'ai est, si je fais la taille automatique de champ de texte, seulement le champ de texte redimensionne et d'autres choses restent telles quelles. Si je calcule la largeur requise à l'aide de la fonction xxxLineMetrics et que je l'applique à Button, l'arrière-plan se redimensionne correctement, mais textfield s'étend également avec eux et semble moche. Je souhaite que les arrière-plans (frère de textfield) soient redimensionnés correctement avec textfield, ce qui rend le bouton agréable avec l'arrière-plan redimensionné et le champ de texte normal.Bouton redimensionnable avec arrière-plan dans le flash CS4

J'espère que u guys obtenu ce que je veux ... toute aide appréciée ...

Merci,

Répondre

0

vous devez appliquer la largeur calculée à la MovieClip bg seulement et non à l'ensemble MovieClip. Parce que cela va aussi changer la largeur du champ de texte.

alors essayez quelque chose comme ceci:

txt.autoSize = TextFieldAutoSize.LEFT; 
txt.text = "label"; 
btn.bg.width = txt.width; 
+0

J'ai essayé cela, mais il textfield aussi extensible! – DexTer

+0

et vos textfiels n'est pas un enfant de votre fond d'écran movieclip? – Yens

+0

Mes TExtFields et Background Sprite/Image sont tous les deux frères et soeurs - enfant d'un Sprite parent. – DexTer

0

vous pouvez essayer le code ci-dessous:

package 
{ 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 

    /** 
    * class represents the MyButton Movieclip in your library containing a dynamic 
    * textfield with instancename txt 
    * and a background movieclip with instance name bg 
    */ 
    public class MyButton extends MovieClip 
    { 
     public var txt : TextField; 
     public var bg : MovieClip; 

     public function MyButton(label : String) 
     { 
      txt.autoSize = TextFieldAutoSize.LEFT; 
      txt.text = label; 
      bg.width = txt.width; 
     } 

    } 
}