PDA

Просмотр полной версии : Размещение созданого програмно текстового поля ровно по центру


Art_133
10.11.2008, 23:38
Добрый вечер. Вопрос думаю простой но я что-то не могу найти ответ на него.
Делаю прилоадер картинок и програмно создаю текстовое поле в котором будут отображаться проценты.
Ставлю его по центру сцены:
Stage.width/2
Stage.height/2
Но он немного не по центру получается так как точка отсчёта этого текста по умолчанию "TL". Как сделать что б это точка была по центру?
Спасибо.

etc
10.11.2008, 23:49
Сместить на половину ширины и высоты текстовое поле?

Art_133
10.11.2008, 23:55
Да, я так и делаю. Это единственный вариант?

dimarik
11.11.2008, 00:01
this.yourTextField.x = Stage.width / 2 - this.yourTextField.width / 2;
this.yourTextField.y = Stage.height / 2 - this.yourTextField.height / 2;

Update: для отслеживания изменения размера экрана можно сделать так. Ваше поле будет всегда по центру экрана.
var dept:Number = 1000; // some depth

this.createTextField('yourTextField', depth, 0, 0, 0, 0);
this.yourTextField.text = 'Hello, World! :)';
this.yourTextField.autoSize = 'center';

this.onResize();

this.onResize = function():Void {
this.yourTextField.x = Stage.width / 2 - this.yourTextField.width / 2;
this.yourTextField.y = Stage.height / 2 - this.yourTextField.height / 2;
};

Stage.addListener(this);

etc
11.11.2008, 00:03
Art_133, если бы вы так делали, вопроса бы не было.

dimarik, ай-яй-яй!

dimarik
11.11.2008, 00:17
Уважаемый __etc, поясните свою мысль по поводу "dimarik, ай-яй-яй!" =)

etc
11.11.2008, 00:25
dimarik, два раза пополам делишь, а мог бы и один :quiet:

dimarik
11.11.2008, 00:26
а я вроде поправил давно :rolleyes:

etc
11.11.2008, 00:31
Неа, ничего не поправил. Разность ширины стейджа и текстового поля можно было посчитать и поделить в конечном итоге единственный раз, а не высчитывать разницу половины ширины стейджа и половины ширины текстового поля.

Art_133
11.11.2008, 00:37
Art_133, если бы вы так делали, вопроса бы не было.

dimarik, ай-яй-яй!
Вопрос возник потому что я считаю что есть болие рациональное решение чем делить ширину текстового поля, к примеру:
мой_текст.align = "C"

dimarik
11.11.2008, 00:44
Art_133, это что за новый тип алигна? И без точки с запятой после.

etc
11.11.2008, 00:52
Art_133, да ну? А давно такое свойство, как align, образовалось у TextField, да ещё с подобным значением?

dimarik
11.11.2008, 00:54
__etc , ширина текстового поля определяется текстом его содержащим. При изменении текста следовало бы ввести поддержку события onChangeTextValue, например. Потому пересчет ширины не счтитаю зазорным. А по поводу высоты Вы правы.
var dept:Number = 1000; // some depth

this.createTextField('yourTextField', depth, 0, 0, 0, 0);
this.yourTextField.text = 'Hello, World! :)';
this.yourTextField.autoSize = 'center';
var yourTextFieldHalhHeight:Number = this.yourTextField.height / 2;

this.onResize();

this.onResize = function():Void {
this.yourTextField.x = Stage.width / 2 - this.yourTextField.width / 2;
this.yourTextField.y = Stage.height / 2 - this.yourTextFieldHalhHeight;
};

Stage.addListener(this);

etc
11.11.2008, 00:58
Дима, всё просто, фиг бы с ней, с высотой. Просто и легко:

(Stage.width - this.yourTextField.width) / 2;

dimarik
11.11.2008, 01:04
А-а-а-а! Семён Семёныч! (с) Бриллиантовая рука. Математика, какой-то класс =)

etc
11.11.2008, 01:09
Кстати, не width, а _width :)

dimarik
11.11.2008, 01:11
Аха, недоглядел. Сложно переключаться с ас3 на ас2 и наоборот. А у Stage.width так и есть =)