Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ограничения на размер типа String (http://www.flasher.ru/forum/showthread.php?t=207953)

helio 21.05.2014 00:09

Ограничения на размер типа String
 
Столкнулся с такой проблемой. У меня есть небольшой чат. В нем есть при написании сообщения, в нем применяются стили(цвет сообщение, реагирование на событие клика по имени автора сообщения) и пр. при помощи св-ва TextField.htmlText. Так вот

Код:

html += msg; // msg - новое сообщение
_textField.htmlText = html; // html - это переменная строкового типа, в которой хранится все html теги и небольшая история предыдущих написанных сообщений.

В общем в итого после набора 10-ка сообщений переменная html становится большого размера и после этого набранные сообщения не отображаются в textfield. Может ли это быть причиной?

in4core 21.05.2014 00:26

Сделайте как в скайпе, историю по дням типа того. Ну а вообще поидее такое ограничение не сделать. Ограничение есть, но оно настолько большое, что бояться обычно нечего.
Если посмотрите тот же скайп, видно, что ограничение ЕСТЬ на само сообщение. А НЕСКОЛЬКО сообщений, это отдельные объекты, а не один TF

helio 21.05.2014 00:30

не у меня попроще, чем в скайпе. Чисто простой игровой чат.

in4core 21.05.2014 02:03

Пускай попроще, но смысл то один, делать надо как положено

caseyryan 21.05.2014 08:08

Там даже дело не в ограничении на длину строки, а в том, что такой огромный текст начнет тупить при прокрутке. in4core дело говорит, надо разбивать на дни

helio 21.05.2014 10:55

А если вместо TextField использовать TextArea это не изменит ситуацию?

alexcon314 21.05.2014 11:06

В основе компонента TextArea сидит все тот же TextField. Или вы думаете он там какой-то особенный?
Тупняк TextField на больших объемах текста имеет место быть. Но вообще, уточните, какой именно объем текста вы пытаетесь отобразить? Потом, вы используте html-форматирование, возможно, закралась ошибка в расстановку тэгов.

ZackMercury 21.05.2014 13:09

Когда я делал чат, я делал массив строк и функцию update(), которая проходилась по массиву и составляла html для текстового поля.
Хотя нет, я даже делал массив объектов, в объект я сохранял имя, сообщение и дату отправления.
А форматировал всё это как надо в функции update().
Это так, чтобы разделить работу программы на несколько частей)
Конечно, даже при больших объёмах сообщения обновлялись довольно быстро.
Однако хранить и отображать все эти сообщения не желательно, ибо рано или поздно начинаются тормоза, и чтобы их избежать нужно сделать отображение только последних ну там 100-200 сообщений.
И сделать кнопочку "просмотреть старые сообщения", которая бы отводила пользователя на 100-200 сообщений назад.
Ах, да, я бы вам не советовал напрямую давать пользователям возможность писать в htmlText, ибо таким образом они могут встраивать и картинки(<img src="..." />).
Поэтому лучше экранируйте все < и > в сообщении перед отправкой.

helio 21.05.2014 13:34

Цитата:

Сообщение от alexcon314 (Сообщение 1166235)
В основе компонента TextArea сидит все тот же TextField. Или вы думаете он там какой-то особенный?
Тупняк TextField на больших объемах текста имеет место быть. Но вообще, уточните, какой именно объем текста вы пытаетесь отобразить? Потом, вы используте html-форматирование, возможно, закралась ошибка в расстановку тэгов.

Ну истории сообщений у меня, как таковой нет. Просто сохраняются последние 30 сообщений, а остальные удаляются. Вы правы. Проблема была в парсинге. Когда я пишу апостроф или двойные кавычки, то сообщение не отображается. Например, сообщение: I don't know.


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

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