Изменяемая кнопка с фоном во флэш-памяти CS4 - PullRequest
0 голосов
/ 07 декабря 2009

Я хочу создать кнопку, которая динамически изменяет размер содержимого. Для этого я создал MovieClip в библиотеке и добавил в него четыре слоя, а именно: текст, bg, shadow и border.

Проблема, с которой я столкнулся, заключается в том, что, если я сделаю авторазмер текстового поля, только размеры текстового поля изменятся, а другие вещи останутся такими, как есть. если я вычисляю требуемую ширину с помощью функции xxxLineMetrics и применяю ее к кнопке, фон изменяет размеры должным образом, но текстовое поле также растягивается с ними и выглядит некрасиво.

Я хочу, чтобы фоны (родственные элементы текстового поля) правильно изменяли размер с текстовым полем, поэтому кнопка выглядит хорошо с измененным фоном и обычным автоматически изменяемым текстовым полем.

Надеюсь, вы, ребята, получили то, что я хочу ... любая помощь оценена ...

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

Вы можете попробовать код ниже:

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

    }
}
0 голосов
/ 07 декабря 2009

Вы должны применить рассчитанную ширину только к видеоклипу bg, а не ко всему видеоклипу. Потому что это также изменит ширину текстового поля.

так что попробуйте что-то вроде этого:

txt.autoSize = TextFieldAutoSize.LEFT;
txt.text = "label";
btn.bg.width = txt.width;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...