Форум 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=128370)

Xero201 06.08.2009 10:41

Полное заполнение строки до переноса текста
 
Задача в том, чтобы переносить слова, которые не умещаются в строке не целиком, а только по кусочкам, которые не помещаются по ширине текстового поля. Например, если в слове «бесконечность» не помещается только последняя буква, то в первой строке должно остаться «бесконечност» а во вторую перенестись только «ь».:rolleyes:

udaaff 06.08.2009 12:26

Код AS1/AS2:

var txt:TextField = createTextField("txt", getNextHighestDepth(), 10, 10, 40, 60);
txt.border = true;
txt.wordWrap = true;
txt.text = "Бесконечность";


Xero201 06.08.2009 14:03

Возможно я не точно сформулировал проблему.
Вариант с "wordWrap" работает только если слово одно, и просто некуда деваться, если будет например
Код AS1/AS2:

var txt:TextField = createTextField("txt", getNextHighestDepth(), 10, 10, 120, 60);
txt.border = true;
txt.wordWrap = true;
txt.text = "трали вали Бесконечность";

то будет простой перенос по словам, а не по ширине поля (((

Жень Шень 06.08.2009 20:10

Привет!
Это извращение, но цель достигнута:
Код AS1/AS2:

var txt:TextField = createTextField("txt", getNextHighestDepth(), 10, 10, 120, 60);
var str:String = "трали вали Бесконечность";
var n:Number = 15;
txt.border = true;
txt.wordWrap = true;
for (var i = 0; i<str.length; i++) {
        txt.text += str.substr(i, 1);
        if (txt.textHeight>n) {
                txt.text = str.substr(0, i);
                txt.text += "\n";
                txt.text += str.substr(i, 1);
                n += n;
        }
}


Xero201 06.08.2009 21:09

Цитата:

Сообщение от Жень Шень (Сообщение 841015)
Привет! Это извращение, но цель достигнута:

Здоров.
Спасибо, идея ясна. Жаль если нелья решить по другому (а то текста много). Кстати, исправил несколько помарок:
Код AS1/AS2:

var txt:TextField = createTextField("txt", getNextHighestDepth(), 10, 10, 70, 95);
var str:String = "трали вали Бесконечность трали вали Бесконечность трали вали";
var n:Number = 15;
var d:Number = 0;        //d учитывает новые символы \n
txt.border = true;
txt.wordWrap = true;
for (var i = 0; i<str.length; i++) {
        txt.text += str.substr(i, 1);
        if (txt.textHeight>n) {
                txt.text = txt.text.substr(0, i+d++);//а не из str
                txt.text += "\n";
                txt.text += str.substr(i, 1);
                n = txt.textHeight;
        }
}



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

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