Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Странная работа textField.onChanged () (http://www.flasher.ru/forum/showthread.php?t=114007)

Волгоградец 16.07.2008 13:19

Не знаю, глюк это или нет, но вот код:
Код:

class EditText {
       
        private var _mc:MovieClip;
        private var containerForTxt:MovieClip;
        private var txtToEdit:TextField;
       
        public function EditText (mc:MovieClip)
        {
                _mc = mc;
                containerForTxt = _mc.createEmptyMovieClip("containerForTxt", _mc.getNextHighestDepth());
                txtToEdit = containerForTxt.createTextField("txtToEdit", containerForTxt.getNextHighestDepth(), 0, 0, 0, 0);
                txtToEdit.type = "input";
                txtToEdit.autoSize = true;
                txtToEdit.maxChars = 10;
                txtToEdit.border = true;
                txtToEdit.text = "Type here";
               
               
               
                containerForTxt.beginFill(0xEEEEEE, 100);
                containerForTxt.lineStyle(0, 0x000000, 0);
                containerForTxt.moveTo(0, 0);
                containerForTxt.lineTo(txtToEdit._width, 0);
                containerForTxt.lineTo(txtToEdit._width, txtToEdit._height);
                containerForTxt.lineTo(0, txtToEdit._height);
                containerForTxt.lineTo(0, 0);
                containerForTxt.endFill ();
               
                txtToEdit.onChanged = InilsDelegate.create(this, changeText);
               
                trace (containerForTxt._width);
                trace (txtToEdit._width)
        }
       
        private function changeText ():Void
        {
                containerForTxt._width = txtToEdit._width;
                containerForTxt._height = txtToEdit._height;
                trace (containerForTxt._width);
                trace (txtToEdit._width);
        }
}

Вобщем при изменении текста, размеры клипа, в который помещен этот текст (containerForTxt), отчего-то не становятся равными размерам текстового поля, а приобретает какие-то левые размеры.

А вот так все норм.:
Код:

_root.onMouseDown = InilsDelegate.create(this, test);

private function test ():Void{
        txtToEdit.text += "h";
        containerForTxt._width = txtToEdit._width;
               
        trace (containerForTxt._width);
        trace (txtToEdit._width);
}


Волгоградец 16.07.2008 13:22

Ой, случайно два раза запостил.

iNils 16.07.2008 13:25

Размеры клипы всегда равны размеру его содержимого. А то что сейчас делается, это меняется лишь масштаб.

Волгоградец 16.07.2008 13:35

Не понял... Например:
Код:

trace (containerForTxt._width);//61.35
trace (txtToEdit._width);//66.7

И визуально клип больше.

iNils 16.07.2008 13:37

А линии типа не считаются?:)

Волгоградец 16.07.2008 13:59

iNils, правда не догоняю.
Код:

containerForTxt.lineStyle(0, 0x000000, 0);
Т.е. hairline - всегда равна 1.

Upd.:
А как такие значения - до и после удаления одной буквы (lineStyle вообще опущен):
Код:

97.6 и 103.2
96.4 и 97.55

И почему при добавлении букв, ширина постепенно выравнивается и становится одинаковой, а при удалении - такая фигня?

iNils 16.07.2008 14:09

Изменение размеров containerForTxt вообще надо убрать, а рисованную рамку поместить в отдельный мувиклип и менять его размеры, а не размеры контейнера.
А сейчас меняется размеры контейнера под размеры поля, содержащий это же поле (рубим сук на котором сидим), а текст без эмбета, поэтому он не сжимается.

Волгоградец 16.07.2008 14:26

Все, понял, спасибо!
Цитата:

рубим сук на котором сидим
И все встало на свои места. Невнимательность, блин.


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

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