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

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

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

Регистрация: Jun 2005
Сообщений: 10
По умолчанию динамически скомпоновать текст

Добрый день, уважаемые.
Обращаюсь к вам с такой проблемой. Сам я к флэшу не имею никакого отношения, но понадобилось сделать такую вещь. Буду очень благодарен если укажете в каких направлениях нужно копать.

Задача такова: флэшке через FlashVars передается 2 параметра (текст) и эти два текста нужно скомпоновать следующим образом:
-----------
| текст 1 |
-----------
| текст 2 |
-----------

Нашел что это можно сделать примерно так:
_root.createTextField("mytext",1,10,10,300,100);
mytext.multiline = true;
mytext.wordWrap = true;
mytext.border = false;
mytext.text = "my text here";

Как я понимаю, что возможно расположить текстовые блоки только по абсолютным координатам. Отсюда вопрос:

1. Как можно грамотно определить координаты для второго блока? (то есть нужно чтобы для данного шрифта произвелся рендеринг первого блока и можно было узнать сколько реально занял этот текстовый блок по высоте)

2. Может есть какие другие способы компоновки динамического текста? (может что-нибудь наподобие LayoutManager'ов Java?)

3. Как для заданного шрифта узнать сколько будет занимать заданная строка по ширине?

Старый 16.06.2005, 19:19
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
ммм... как насчет свойства autoSize=true, сначала вставить текст в первый блок, после чего он автоматом поправиться, а потом уже позиционировать второй.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 16.06.2005, 19:26
DrZubr вне форума Посмотреть профиль Отправить личное сообщение для DrZubr Найти все сообщения от DrZubr
  № 3  
Ответить с цитированием
DrZubr

Регистрация: Jun 2005
Сообщений: 10
так вот проблема то именно в том, куда позиционировать второй?

Старый 16.06.2005, 19:29
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
TextField2._y = TextField1._height + TextField1._y
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.06.2005, 19:35
DrZubr вне форума Посмотреть профиль Отправить личное сообщение для DrZubr Найти все сообщения от DrZubr
  № 5  
Ответить с цитированием
DrZubr

Регистрация: Jun 2005
Сообщений: 10
Цитата:
Сообщение от iNils
TextField2._y = TextField1._height + TextField1._y
Да, супер! Огромное спасибо, а я почему-то не подумал, что это свойство может отражать реальную высоту, а не ту которая указывалась в конструкторе...

А по поводу вопроса №3?

Старый 16.06.2005, 19:44
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 6  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
TextFormat.getTextExtent()
Кстати на этом форуме считаеться хорошим тоном читать хелп =)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 16.06.2005, 19:50
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Nirth
Это если ты хочешь заранее знать, и то не точно считает. А если текст уже задан, то реальные размеры можно узнать с помощью:
TextField.textHeight
TextField.textWidth
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.06.2005, 19:54
DrZubr вне форума Посмотреть профиль Отправить личное сообщение для DrZubr Найти все сообщения от DrZubr
  № 8  
Ответить с цитированием
DrZubr

Регистрация: Jun 2005
Сообщений: 10
Цитата:
Сообщение от Nirth
TextFormat.getTextExtent()
Кстати на этом форуме считаеться хорошим тоном читать хелп =)
И вам огромное спасибо, уважаемый.
Это на всех форумах считается хорошим тоном. Но к сожалению за полдня это нереально поднять тучу толковых доков, разобраться в абсолютно незнакомой технологии и найти что нужно...

Старый 16.06.2005, 20:06
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 9  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
на всякий случай, на будущее выложу код, чтоб понятно было
Код:
function createText(name:String):TextField {
	this.createTextField(name,this.getNextHighestDepth(),0,0,0,0);
	this[name].autoSize=this[name].border = true;
	return this[name];
}
var text1_str:String = "boo \nboooo \nbobo";
var text2_str:String = "baba \nbubu \nbibuba";
createText("text1_txt");
this.text1_txt.text=text1_str;
createText("text2_txt");
text2_txt._y = this.text1_txt._x+this.text1_txt._height;
text2_txt.text=text2_str;
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

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

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


 


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


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