Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.07.2013, 15:24
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Post 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.

Старый 17.07.2013, 15:37
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
У 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);

Старый 17.07.2013, 17:48
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 3  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
caseyryan, да, stageWidth, блин точно, спасибо.

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

Нажмите на изображение для увеличения
Название: snap4854.jpg
Просмотров: 150
Размер:	151.6 Кб
ID:	29828

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

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

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

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

Старый 17.07.2013, 18:25
Deimos747 вне форума Посмотреть профиль Отправить личное сообщение для Deimos747 Найти все сообщения от Deimos747
  № 4  
Ответить с цитированием
Deimos747
 
Аватар для Deimos747

Регистрация: Mar 2011
Сообщений: 243
Текст присваивается до или после центрирования?

Старый 18.07.2013, 09:21
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 5  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Deimos747, До.

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

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

UPD: Переместил строки:
Код AS3:
text1.setTextFormat(format1);
text1.filters = filter1.filtersArray;
... до присвоения координат. И всё получилось.


Последний раз редактировалось iNils; 25.07.2013 в 15:35.
Старый 18.07.2013, 09:36
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 6  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
По-моему если поставить autoSize в TextFieldAutoSize.CENTER; и поправлять координаты после каждого изменения текста, то должно быть норм

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

Старый 18.07.2013, 11:47
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 7  
Ответить с цитированием
Fogflasher

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

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

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

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

Старый 18.07.2013, 12:01
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 8  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
А, ясно
Нет, я думал у вас BitmapFont из спрайт листа, спасибо

Старый 18.07.2013, 12:16
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 9  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
KumoKairo, да незачто.

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

Старый 18.07.2013, 19:49
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 10  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
BitmapFont это набор всевозможных требуемых приложением символов, которые заранее отрисованы с применением необходимых стилей, фильтров и т.д., собранных в виде одного изображения (которое по идее отправляется в виде текстуры на графическую карту)
Поскольку мобильные приложения с векторной графикой не очень дружат, для мобильников этот процесс отлажен просто до упора
Вот например:
Название: desyrel.png
Просмотров: 336

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
stage , textfield , формула , центр , центрирование
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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