Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   динамически скомпоновать текст (http://www.flasher.ru/forum/showthread.php?t=65684)

DrZubr 16.06.2005 19:14

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

Задача такова: флэшке через 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. Как для заданного шрифта узнать сколько будет занимать заданная строка по ширине?

Nirth 16.06.2005 19:19

ммм... как насчет свойства autoSize=true, сначала вставить текст в первый блок, после чего он автоматом поправиться, а потом уже позиционировать второй.

DrZubr 16.06.2005 19:26

так вот проблема то именно в том, куда позиционировать второй?

iNils 16.06.2005 19:29

TextField2._y = TextField1._height + TextField1._y

DrZubr 16.06.2005 19:35

Цитата:

Сообщение от iNils
TextField2._y = TextField1._height + TextField1._y

Да, супер! Огромное спасибо, а я почему-то не подумал, что это свойство может отражать реальную высоту, а не ту которая указывалась в конструкторе...

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

Nirth 16.06.2005 19:44

TextFormat.getTextExtent()
Кстати на этом форуме считаеться хорошим тоном читать хелп =)

iNils 16.06.2005 19:50

Цитата:

Сообщение от Nirth

Это если ты хочешь заранее знать, и то не точно считает. А если текст уже задан, то реальные размеры можно узнать с помощью:
TextField.textHeight
TextField.textWidth

DrZubr 16.06.2005 19:54

Цитата:

Сообщение от Nirth
TextFormat.getTextExtent()
Кстати на этом форуме считаеться хорошим тоном читать хелп =)

И вам огромное спасибо, уважаемый.
Это на всех форумах считается хорошим тоном. Но к сожалению за полдня это нереально поднять тучу толковых доков, разобраться в абсолютно незнакомой технологии и найти что нужно...

Nirth 16.06.2005 20:06

на всякий случай, на будущее выложу код, чтоб понятно было
Код:

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;



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

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