Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Растягиваемый movieclip (http://www.flasher.ru/forum/showthread.php?t=131545)

dimani4 22.10.2009 22:52

Растягиваемый movieclip
 
Привет всем flasher-ам. Необходимо создать окошко у которого бы изменялись размеры в зависимости от объема текста внутри него. Вроде бы все просто. Но при изменении размеров окна, изменяются и размеры всего того, что в нем, в частности увеличивается шрифт текста и кнопка внутри. Так вот как сделать так чтобы окошко тенулось а шрифт не менялся и размер кнопки тоже.
this.stage.scaleMode = StageScaleMode.NO_SCALE; не помогает.

BARTLEBY 22.10.2009 23:21

width, height ?
код в студию...

dimani4 22.10.2009 23:43

Это понятно. Да сам мовиклип увиличится, но координаты внутри останутся такие же. Например кинишь на клип кнопку на координаты 100 100, после изменения размеров кнопка тоже увеличится и сдвинется, но в координатах клипа так и останется 100 100. А надо чтобы размеры кнопки оставались такие же и относительное положение тоже не менялось..

Добавлено через 46 секунд
Код AS3:

public function show(str:String) {
                        var fon = new AlertFon();               
 
                        fon.scaleX = 1;
                        fon.scaleY = 1;
                        addChild(fon);
                        fon.stage.scaleMode = StageScaleMode.NO_SCALE;
                        this.stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        // create text field
                        var FORMAT:TextFormat = new TextFormat();
                        FORMAT.font = "Georgia";                       
                        FORMAT.align = "left";
                        FORMAT.bold = true;
                        //FORMAT.color = 0x154672;
                        FORMAT.color = 0xffffff;
                        FORMAT.size = 14;
 
                        var tf = new TextField();       
                        tf.autoSize = TextFieldAutoSize.LEFT;
                        tf.defaultTextFormat = FORMAT;
                        tf.type = TextFieldType.DYNAMIC;                       
                        tf.text = str;
                        if (tf.width > (this.maxWidth - 2 * this.padding)) {                               
                                tf.text = "";
                                tf.multiline = true;
                                tf.wordWrap = true;       
                                tf.width = this.maxWidth - 2 * this.padding;
                                tf.text = str;
                        }                       
                        tf.border = false;
                        tf.background = false;                       
                        //tf.sharpness = 4;                       
                        tf.selectable = false;                       
                        //
                        var okButton = new OkButton();
                        //resize fon
                        fon.width = tf.width + 2 * this.padding;
                        fon.height = tf.height + this.paddingBottom + this.paddingTop + okButton.height + 10;                       
                        tf.x = fon.width / 2 - tf.width / 2;                       
                        tf.y = paddingTop;                       
                        //ok button
                        fon.addChild(okButton);
                        this.addListenersToButton(okButton);                       
                        okButton.x = fon.width / 2 - okButton.width / 2;                       
                        okButton.y = fon.height - okButton.height - this.paddingBottom;
                        fon.addChild(tf);                                       
                        //addChild(fon);
                }

Добавлено через 1 минуту
нужно окошко - alert.

Felicast 23.10.2009 11:44

что-то плохо понял вопрос. но все-таки:
Код AS3:

this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP_LEFT;
this.stage.addEventListener(Event.RESIZE, stageResizeHandler);

а в обработчике stageResizeHandler делаешь, что душе угодно

по коду:
Код AS3:

fon.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.scaleMode = StageScaleMode.NO_SCALE;
//это бессмысленно. нужно делать 1 раз и желательно в основном классе
//т.к. stage один для всех
fon.scaleX = 1;
fon.scaleY = 1;
//тоже сомнительно. (вообще лучше не баловаться этими свойствами


dimani4 24.10.2009 21:42

Спасибо.


Часовой пояс GMT +4, время: 14:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.