PDA

Просмотр полной версии : as1, видимая часть текста в TextField


Mnilionic
19.10.2005, 02:54
вопрос такой:
как удалить часть текста, которая не влезает в отведённое поле TextField.
Например: в TextField три строки, а текста на 5 строк. я ставлю maxscroll и хочу удалить верхние две строки, которые не влезли.
вот.
спасибо.

Iv
19.10.2005, 03:58
циклом, например, удаляя по 10 букв, затем бисекцией подгоняешь до буквы...

nuran
19.10.2005, 05:29
Просто так — никак, правильный ответ смотри выше.

Mnilionic
20.10.2005, 02:08
что такое "бисекция"

Iv
20.10.2005, 02:28
бисекция - метод нахождения результата путем деления пополам.
полно описаний в сети, но думаю, бисекция тут все-таки не нужна.

попробуй так:
поскольку, скорее всего, тебе точность в 10 букв будет маловата
и нужно подогнать до буквы, то, как только ты определил,
что ты убрал лишнее, начинаешь прибавлять по букве до тех пор,
пока не увидишь, что свойство maxscroll (а мож bottomscroll - не помню точно)
станет больше на 1.
Отлично. сносишь последнюю добавленную букву и всё.

Mnilionic
20.10.2005, 02:57
фишка в том, что это нужно для окна отображения сообщений флэш-чата, и прокручивать такие циклы при получении каждого сообщения - утомительно для плеера. Видимо придётся ограничиться кнопкой "очистить".

Iv
20.10.2005, 03:34
в таких случаях используется другой путь:

this.addNewMessage = function (new_message) {
var max_messages = 10
if (this.messages_array.length > max_messages) {
this.messages_array.shift()
}
this.messages_array.push(new_message)
return this.messages_array.join("\n")
}
.............................
this.output_txt.htmlText = this.addNewMessage(new_message)

Mnilionic
20.10.2005, 03:42
ммм.. ну можно и сообщения отсчитывать... чё-то я сам не сообразил.. а там плюс/минус пару строк - не страшно.
Спасибо.

Mnilionic
21.10.2005, 04:00
отситать оказалось сложнее... сделал так:

txt_window.scroll = txt_window.maxscroll;
if (txt_window.scroll>2) {
selection.setFocus("txt_window");
do {
selection.setSelection(0, 10);
txt_window.replaceSel("...");
txt_window.scroll = txt_window.maxscroll;
} while (txt_window.scroll>2);
}