Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   TextField: размещение в центр Stage. (http://www.flasher.ru/forum/showthread.php?t=202455)

Fogflasher 17.07.2013 15:24

TextField: размещение в центр Stage.
 
Всем лукошечко с черникой.

Еще один базовый вопрос.
Необходимо разместить TextField в самый центр Stage, с учетом того, что его длина может быть произвольной.

Как это сделать?

Я через поиск посмотрел, но навскидку конкретного поста не увидел.
В близком по смыслу посту, in4core предлагал формулу центровки для мувиклипа, с учетом длины и ширины.

По этой аналогии, я предположил, что со стэйджем должно быть примерно так:

Код AS3:

text1.x = (stage.width - text1.width) * 0.5;
text1.y = (stage.height - text1.height) * 0.5;

Однако при запуске текстфилд "уплыл" куда-то в верхний левый угол.
Я решил посчитать, что же произошло.

Stage.width = 640, Stage.height = 480
text1.width = 124, text.height = 80

Итого, по формуле получаем:
text1.x = 258, text1.y = 200.

Если на глаз прикинуть, то вроде бы это верные координаты.
Но только, если x и y TextField размещаются в левом верхнем углу.
Но судя по всему это не так, и наверное на самом деле они отмечают центр TextField?

В хэлпе Адоуб вроде бы не сказано откуда именно отсчитывать x и y TextField.

caseyryan 17.07.2013 15:37

У stage есть свойства stageWidth и stageHeight.
Вот их и надо использовать
Код AS3:

var tf:TextField = new TextField();
tf.width = 200;
tf.height = 20;
tf.background = true;
tf.text = "проверка";
tf.x = (stage.stageWidth - tf.width) / 2;
tf.y = (stage.stageHeight - tf.height) / 2;
addChild(tf);


Fogflasher 17.07.2013 17:48

Вложений: 1
caseyryan, да, stageWidth, блин точно, спасибо.

Однако в таком варианте имеется перекос:
теперь x и y текстфилда вроде бы находятся в центре...
Но тогда получается так:

Вложение 29828

В формулу нужна поправка похоже.
Может быть еще влияют другие параметры?

Например есть:

textFormat'овское свойство:
- align = TextFormatAlign.LEFT;

textField'овские свойства:
- autoSize = TextFieldAutoSize.LEFT;
- multiline = true;
- wordWrap = false;

Deimos747 17.07.2013 18:25

Текст присваивается до или после центрирования?

Fogflasher 18.07.2013 09:21

Deimos747, До.

Сейчас вот сделал - после. Он еще ниже в правый угол ушел, лол.

Странно, почему это влияет..? Значит надо играцца с всякими алигнами, наверное.

UPD: Переместил строки:
Код AS3:

text1.setTextFormat(format1);
text1.filters = filter1.filtersArray;

... до присвоения координат. И всё получилось.

KumoKairo 18.07.2013 09:36

По-моему если поставить autoSize в TextFieldAutoSize.CENTER; и поправлять координаты после каждого изменения текста, то должно быть норм

Оффтопик: у вас растровый шрифт? Не поделитесь своим способом реализации на нативном флеше?

Fogflasher 18.07.2013 11:47

KumoKairo, странно дело, если TextFieldAutoSize.CENTER поставить, и переместить форматирование обратно (в докоординатное положение), то текст центрируется по ширине правильно, но смещен в нижний угол.

Насчет шрифта, это Rokwell Extra Bold, OpenType-овский шрифт.
Я не знаю что означает "растровый" в применении к шрифтам?

Способ реализации прост: основной файл (координаты + текст) + класс текста (базовые настройки) + класс формата (там только цвет и имя шрифта) + класс фильтров (настройки фильтров).

Если нужен код класса фильтров, могу запостить его здесь.

KumoKairo 18.07.2013 12:01

А, ясно
Нет, я думал у вас BitmapFont из спрайт листа, спасибо :)

Fogflasher 18.07.2013 12:16

KumoKairo, да незачто.

Ээ, а что такое "BitmapFont из спрайт листа" ?
Можно хотя бы в паре слов, что это - техника вывода текста, юзая чисто графику?
Было бы полезно, если я это себе правильно представляю. Типа не юзать шрифты, не внедрять их.

KumoKairo 18.07.2013 19:49

Вложений: 1
BitmapFont это набор всевозможных требуемых приложением символов, которые заранее отрисованы с применением необходимых стилей, фильтров и т.д., собранных в виде одного изображения (которое по идее отправляется в виде текстуры на графическую карту)
Поскольку мобильные приложения с векторной графикой не очень дружат, для мобильников этот процесс отлажен просто до упора :)
Вот например:
Вложение 29829
У меня просто недавно возникла необходимость добавить текстовое поле с готовым шрифтом, а безбиблиотечной реализации (я "фанат" старлинга и там это есть) не оказалось. А то что нашел было слишком масштабным. В итоге пришлось делать свою реализацию отрисовки, но она не гибкая, расчитанная только "на один раз", поэтому стало интересно узнать насчет вашего способа отрисовки текста


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

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