PDA

Просмотр полной версии : Окно с автоскроллингом для чата


mikhailk
29.04.2010, 12:05
Честно говоря, задача проходная и тратить время на глубокое изучение вопроса просто лень.

Окно чата - динамическое текстовое поле произвольной высоты и ширины, новые сообщения поступают так:
chatWindow.text = chatWindow.text + incomingMessage + "\n"

Нужно, чтобы сначала сообщения добавлялись начиная с верха окна, а потом, когда окно заполнится, весь текст должен смещаться вверх, чтоб последнее сообщение всегда было на виду. Сообщение может занимать несколько строк, но не все окно чата.

Psycho Tiger
29.04.2010, 12:31
chatWindow.text = incomingMessage + "\n" + chatWindow.text;

mickfallout
29.04.2010, 12:50
chatWindow.text = incomingMessage + "\n" + chatWindow.text;
сообщения будут вниз смещаться.
package {

import flash.display.*
import flash.events.*
import flash.text.TextField;
public class Main extends Sprite {
private var tf:TextField = new TextField();
public function Main()
{
super();
addChild(tf);
var i:int = 0;
while(i++<20)
add("("+i+")");
}
private function add(str:String):void
{
tf.appendText(str+'\n');
tf.scrollV = tf.maxScrollV;
}
}
}
а так вверх.

mikhailk
29.04.2010, 12:53
Нет, как смещать вниз я и сам догадался :)
Ок, второй вариант попробую.

Zebestov
29.04.2010, 14:19
chatWindow.text = chatWindow.text + incomingMessage + "\n"

как-то раз я попытался сделать именно так, как ты тут написал =) вежливый Flash IDE порекомендовал мне увеличить скорость работы пользуя метод appendText() вместо этой конструкции.

mickfallout
29.04.2010, 14:26
chatWindow.text = chatWindow.text + incomingMessage + "\n"

как-то раз я попытался сделать именно так, как ты тут написал =) вежливый Flash IDE порекомендовал мне увеличить скорость работы пользуя метод appendText() вместо этой конструкции.
FD не менее вежлив =)
Warning: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.

Zebestov
29.04.2010, 14:28
хм. а может это он и был =)

Psycho Tiger
29.04.2010, 20:53
А где вы там += увидели, в моём коде?

Перечитал что хотел автор. Ошибся, думал что он хочет чтобы новое сообщение было вверху.

Тьфу. У меня совсем крыша едет.