![]() |
чат со смайлами AS 3.0
Есть идеи?
|
Есть :)
В AS3 в классе TextField добавились новые методы типа getCharBoundaries, что значительно упрощает подстановку смайликов на свои места.
Технология прежняя, в тексте заменяем смайлик на пробел, а поверх текста в нужное место аттачим мувик со смайлом. Ниже код основного класса, когда я проводил эксперименты с этим. Что он делает: 1. Получает текст одной мессаги в которой смайлы заменены на спецсимвол за которым идет номер смайла, типа: "test :bigsmile: end" --> "test @01 end" 2. Составляется таблица стилей под каждый смайлик setStyle(".smile"+i, {letterSpacing:smile_mc.width}); т.о. один символ такого стиля будет шириной в мувик смайла. 3. Выводим в текстовое поле текст по частям до каждого смайлика 3.1. htmlText+="test " 3.2. вместо смайла ставим пробел со стилем смайла. htmlText+='<SPAN class="smile'+smileNum+'"> </SPAN>'; 3.3. вычисляем прямоугольник этого пробела. getCharBoundaries( tf.text.length-1 ); 3.4. аттачим мувик смайла точно поверх пробела. 3.5. повторить... htmlText+=" end" Собственно все. По результатам тестов, лучше выводить не весь текст чата в одно текстовое поле (чат в 20кб. парсился более 3х секунд), а каждую мессагу в отдельный мувик с текстом и смайлами (теже 20кб. парсились 300мс.) Код:
/** |
По моему я вас забанил, наверное нужно будет банить по всему диапазону.
|
MerlinTwi, браво!
|
MerlinTwi, очень, очень полезный пост :)
|
ценная информация
|
Очень полезный пост, на основе него сделал чат. Немного доработал, т.к. хотел что бы весь текст можно было выделить мышкой и скопировать.
Я не стал разбивать весь текст на отдельные строки, а поступил так: При добавлении строки со смайлами в текстовое поле, я точно так же заменяю смайлики на пробел со стилем, а вот сам порядковый номер смайла (от самого начала текста) добавляю в массив arrayIco. т.е. у меня получается массив координат смайлов - вычесленные всего один раз - при добавлении строки! Это - самая долгая операция. Дальше уже при отображении, на событиях скроллинга, прокрутки колесом мышки, вызываю функцию, которая выводит смайлы поверх текстового поля, но только те которые необходимо вывести: Код:
|
Как я смотрю, здесь везде алгоритм отображения строки в чат.А нету алгоритма, когда пользователь формирует у себя на клиенте строку со смайлами, которую отсылает на сервер.Браво то браво, но на половину!
Если работать с полем для ввода, таким же текстфилдом, то к нему нельзя будет применить StyleSheet. Note: A text field with a style sheet is not editable. In other words, a text field with the type property set to TextFieldType.INPUT applies the StyleSheet to the default text for the text field, but the content will no longer be editable by the user. Consider using the TextFormat class to assign styles to input text fields. Вот так вот!Как быть то? |
Цитата:
Цитата:
|
>> доработал. Не заменяю коды смайлов ":), ;) и т.д." на пробелы, а просто меняю их цвет в цвет фона (в моем случае фон монотонный) тем самым, пользователь при копировании сообщения копирует и код смайлов, в отличии от вашего случая. Но вариант не универсален. Думаю над этим...
зы: Нашел версию для as2.0,кому нужно: http://www.gchats.com/products/16_gc...component.html Не совсем в тему, но, __etc, не охота тему новую ради ссылки создавать. Думаю, согласишься, что бессмысленно. |
| Часовой пояс GMT +4, время: 20:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.