Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Текст без TextInput-ов (http://www.flasher.ru/forum/showthread.php?t=135038)

Himerets 14.01.2010 17:14

Текст без TextInput-ов
 
Многие, наверняка, уже знают о том, как это делается, а я вот все еще в танке))

Предположим, передо мной стоит задача создать чат. Есть окно чата. Пользователи отправляют сообщения, у каждого свой цвет. По мимо этого приходят всякие служебные сообщения, типа "Пользователь покинул комнату". У этих сообщений другой размер, цвет и гарнитура.

Когда приходит новое сообщение, в контейнер добавляется текст заданного цвета и шрифта. Вопрос. Как все это реализовать без кучи textInput-ов? Может быть можно выводить текст без их использования? Или с использованием одного textInput-а и отрисовкой его отпечатка в контейнере?

Wolsh 14.01.2010 17:19

Почитайте про TextFormat

Hidest 14.01.2010 17:20

Думается, имелся в виду TextField... читайте про TextFormat.

udaaff 14.01.2010 17:21

Так а чем одно текстовое поле для отображения окна чата не устраивает?

Himerets 14.01.2010 17:23

да с текстформатом-то я знаком.
я так понимаю, предлагается такое решение: отобразить один большой textField, и при добавлении новой строки тут же ее отформатировать. Так?

Добавлено через 2 минуты
> Так а чем одно текстовое поле для отображения окна чата не устраивает?

устраивает, просто интересно, есть ли возможность вывода текста прям на спрайте.
Например в делфях у канвы есть метод: Canvas.TextOut. И не нужно использовать вообще никаких наследников

leofit 14.01.2010 19:20

Можно использовать CSS, и это удобно в данном случае, просто назначить логику распределения классов стилей для сервера, клиентов

Код AS3:

chatTextArea.htmlText += "<span class = 'darkRed'>" + messageString + "</span><br>";


Himerets 14.01.2010 19:25

а как в htmlText сделать переход на новую строку?
пробовал <BR> и \n - не помогло :(

udaaff 14.01.2010 19:57

TextField#multiline true должно быть.

Crenth 15.01.2010 09:38

а попробуйте создать отдельный класс. Пускай это будет контейнер сообщения.
В контейнер поместите собственно текст сообщения, учетную информацию, кнопки управления и прочую лабуду.
Затем создавайте экземпляр класса каждый раз, когда будет появляться новое сообщение в чате.

Проще говоря: контейнер - это конструктор лего. Собрали модельку (то, что вам нравится, используя фишки белого цвета).
Затем, когда поступает новое сообщение, вы собираете точно такую же (как эталонную) модель, но используете фишки нужного цвета. И ставите ее на стол.
Поступило еще сообщение - собрали еще.

При этом новое сообщение будет порождаться примерно так:

Код AS3:

var mess: myMessClass = new myMessClass("Вася, приходи пить пиво!", fromUserid);

в этом случае вы будете работать в основном не с полями, а с контейнерами.
А поля опишите один раз в классе.


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

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