2009-12-07 39 views
0

我想创建一个可以动态调整内容大小的按钮。为了达到这个目的,我在库中创建了一个MovieClip,并在其中添加了四层 - 文本,bg,阴影和边框。带有闪光背景的可调整大小的按钮CS4

问题我得到的是,如果我让文本字段自动调整大小,只有文本字段调整大小,而其他东西保持原样。如果我使用xxxLineMetrics函数计算所需的宽度并将其应用于Button,则背景会正确调整大小,但文本字段也会与它们一起延伸并看起来很难看。

我想要背景(文本字段的兄弟)与文本字段正确调整大小,所以按钮看起来不错,调整大小的背景和正常的自动化文本字段。

我希望能跟大家得到了我想要的东西...任何帮助赞赏...

感谢,

回答

0

您应该计算宽度与BG影片剪辑只适用,而不是整个影片剪辑。因为这也会改变文本框的宽度。

所以尝试这样的事:

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

我已经试过这一点,但它也舒展文本框! – DexTer 2009-12-07 15:59:05

+0

和你的textfiels不是你的背景movieclip的孩子? – Yens 2009-12-07 16:28:56

+0

我的TExtFields和Background Sprite/Image都是兄弟姐妹 - 父Sprite的孩子。 – DexTer 2009-12-08 05:00:45

0

你可以试试下面的代码:

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; 
     } 

    } 
}