Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изменение высоты TextField в CheckBox (http://www.flasher.ru/forum/showthread.php?t=169736)

Srednas 11.10.2011 10:25

Изменение высоты TextField в CheckBox
 
Здравствуйте.

Подскажите, как можно изменить высоту TextField в CheckBox? Точнее она уменьшена, но CheckBox ведет себя как TextField, у которого не задан TextFieldAutoSize: объекты расположенные ниже чекбокса отодвинуты визуально на 100 пикселей хотя:

Код AS3:

                                this.repeatCheckBox.textField.autoSize = TextFieldAutoSize.LEFT;
                                trace(this.repeatCheckBox.textField.height); // 19
                                trace(this.repeatCheckBox.textField.y); // 0
                                trace(this.repeatCheckBox.height); // 22
                                trace(this.repeatCheckBox.y); // 0

результат все равно:

[img]http://s017.***********/i439/1110/ea/96cb4c6d376f.gif[/img]

Azo 11.10.2011 12:39

ну

Код AS3:

this.repeatCheckBox.textField.height =19

и тогда не должно быть 100px

а может дело не в TextField

там может какой другой спрайт еще

Srednas 11.10.2011 13:10

Цитата:

Сообщение от Azo (Сообщение 1038366)
ну

Код AS3:

this.repeatCheckBox.textField.height =19

и тогда не должно быть 100px

а может дело не в TextField

там может какой другой спрайт еще

Даж и не знаю, куда думать..

Это не работает:
Код AS3:

this.repeatCheckBox.textField.height =19

Это тоже не работает:
Код AS3:

this.repeatCheckBox.setSize(50,20);


Azo 11.10.2011 13:36

попробуй удалить этот текст и посмотреть на реакцию..
this.repeatCheckBox.removeChild(textField)

если отступ продолжает быть.- дело в другом

Srednas 11.10.2011 13:42

Цитата:

Сообщение от Azo (Сообщение 1038379)
попробуй удалить этот текст и посмотреть на реакцию..
this.repeatCheckBox.removeChild(textField)

если отступ продолжает быть.- дело в другом

Все становится нормально после удаления. При добавлении — снова сдвигается вверх, т.к. чекбокс занимает 100 px.

mayakwd 11.10.2011 13:47

CheckBox#labelPlacement

В случае если вам это не подойдет, то необходимо создать собственный класс (который наследуется от CheckBox), у которого следует переопределить метод drawLayout

Azo 11.10.2011 13:49

Код AS3:

this.repeatCheckBox.removeChild(textField)
 
var textField:TextField=new TextField();
textField.height=19;
textField.width=100 - 20;
textField.text="проверка";
this.repeatCheckBox.addChild(textField);

а так)

mayakwd 11.10.2011 13:58

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

Правильно будет использовать переопределение метода, либо «нативного» labelPlacement.

Srednas 11.10.2011 14:04

Цитата:

Сообщение от Azo (Сообщение 1038384)
Код AS3:

this.repeatCheckBox.removeChild(textField)
 
var textField:TextField=new TextField();
textField.height=19;
textField.width=100 - 20;
textField.text="проверка";
this.repeatCheckBox.addChild(textField);

а так)

Та то же самое.
Значить что-то в чекбоксе кроме такстфилда есть, только вот как до этого добраться?..

Добавлено через 1 минуту
Цитата:

Сообщение от mayakwd (Сообщение 1038391)
Azo, так нельзя делать, это плохой подход. Вы консервным ножом вскрываете банку с откручиваемой крышкой.

Правильно будет использовать переопределение метода, либо «нативного» labelPlacement.

labelPlacement —*меняет положение лейбла, но высота чекбокса, к сожалению, не изменяется.

trng 11.10.2011 14:11

Компоненты fl.controls.* - это капризные компоненты.
У меня была похожая проблема с TextArea (не хотел уменьшаться невидимый вертикальный скроллбар).
NumericStepper тоже глючил (не помню детали).

В вашем случае не уменьшается один из вложенных компонентов.
Попробуйте trace. Что напишет?
Код AS3:

for (var i:int=0;i<this.repeatCheckBox.numChildren;i++) {
        trace(this.repeatCheckBox.getChildAt(i).name,
                    this.repeatCheckBox.getChildAt(i),
                  this.repeatCheckBox.getChildAt(i).width,
                  this.repeatCheckBox.getChildAt(i).height);
}

После этого сделайте trace детей компонента с "ненормальной" шириной/высотой.


Можете также поустанавливать opaqueBackground:

this.repeatCheckBox.opaqueBackground = 0xff0000;
И для "деток":
this.repeatCheckBox.getChildAt(0).opaqueBackground = 0x00ff00;
this.repeatCheckBox.getChildAt(1).opaqueBackground = 0x0000ff;
... до numChildren

Сама по себе такая установка opaqueBackground может повлиять на поведение глюка.


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

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