Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   [вопрос] смайлики в чате - как? (http://www.flasher.ru/forum/showthread.php?t=69401)

hlopetz 21.09.2005 10:19

[вопрос] смайлики в чате - как?
 
день добрый! не подскажет ли кто направление мысли? нужно к существующему чату привернуть смайлики. пробовал использовать ДинамикТекст, но он умеет только ставить картинки по краям и делать обтекание текста. а мне нужно, чтобы смайлики можно было размещать внутри текста - как символы в строках.

видел один чат (на forum.myspace.com), в котором подобное реализовано. но там в тексте оставляется нужное количество пробелов под смайлик и картинка позиционируется вручную, что очень геморрно и практически невозможно (имхо - может я не прав?) при изменяемых размерах/гарнитурах шрифтов. может есть какой компонент, решающий эту задачу? может в 8-ке это уже работает?

(работаю в флэш 7.2 про.)

Ion 21.09.2005 13:37

Не уверен, но, памоиму, в 8-е динамик текст прокатывает

hlopetz 21.09.2005 14:43

Цитата:

Сообщение от Ion
Не уверен, но, памоиму, в 8-е динамик текст прокатывает

только что проверили - картинка вставляется, но как раньше - позиционируется либо по левому, либо по правому краю.

Silense 21.09.2005 15:07

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

http://www.delphimaster.ru/articles/flash/index.html
линк по теме..
Где то чуть дальше серидины описано как вставлять смайлы именно туда куда нужно.

hlopetz 21.09.2005 16:29

Цитата:

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

спасибо большое. по поиску очень много находил - да все не то.

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

еще раз спасибо.

hlopetz 21.09.2005 16:32

...хотя здесь шрифты одной высоты, а мне придется еще высоту строки выщитывать... :(

(и почему же Макромедия все нормально сделать не могла?!)

TERRORist 21.09.2005 16:43

Попробуй использовать моноширинные шрифты, а картинку вставлять поверх текста, в тексте ее заменять на пробелы. Координаты картинки в таком случае расчитать вполне реально. Размер каждого символа ты знаешь, размер картинка тоже.

hlopetz 21.09.2005 17:03

Цитата:

Сообщение от TERRORist
Попробуй использовать моноширинные шрифты...

да что Вы! это не реально. вот заставить заказчика выбирать между сменой шрифтов и показом смайликов - куда более оптимистичный вариант.

Ion 21.09.2005 17:36

А можно и без моноширинных шрифтов. Тыж ф конце концофф можешь замерить длину каждого символа

TERRORist 21.09.2005 22:01

Ага, линейкой. Ониж могут вроде и дробные пихеля иметь(шрифты-то тоже векторныя)

"вот заставить заказчика выбирать между сменой шрифтов и показом смайликов - куда более оптимистичный вариант." - вот и заставь. А по результату решишь.

Ion 21.09.2005 22:27

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

TERRORist 21.09.2005 22:43

Я ж сказал что если они дробные??? Там же сглаживание!

Ion 21.09.2005 22:53

Ну да, забыл... Значит по-другому: вставляем символ во флеш и замеряем

TERRORist 21.09.2005 23:16

замеряем...что?

Silense 22.09.2005 00:17

2 hlopetz
Да не за что!

Цитата:

Сообщение от TERRORist
замеряем...что?

Все что меряется ;)

Король 22.09.2005 03:26

ребят, ну вы че, совсем - длину динамического текста в пикселях уже не можете вычислить без линейки?

создаем левое дин.поле с autoSize = true, пихаем туда текст, оттуда берем _width - и применяем где надо

hlopetz 22.09.2005 07:40

Цитата:

Сообщение от Король
создаем левое дин.поле с autoSize = true, пихаем туда текст, оттуда берем _width - и применяем где надо

а _width возвращает длинну текста или длинну бокса с его отступами?

Цитата:

Сообщение от Ion
замерив все символы

мерить придется много - чат юникодовый :(

лучше уж по каждому слову мерить и переносить вручную...

в общем ясно - как обычно операция "закат солнца вручную". :)

Король 23.09.2005 00:39

"а _width возвращает длинну текста или длинну бокса с его отступами?"

а слабо длину отступов отнять от длины бокса и получить длину текста?

flash33 19.11.2005 12:46

Все это не катит
 
Я уже смотрел на эту ссылку, но что обидно, работает этот скрипт тормозно! Представьте, на странице ~30-50 смайлов, еще неизвесно сколько не отображается, да тут весь скрипт наглухо заглючит!!! Надо подходить к этой проблеме с другой позиции... Хотя, не отрицаю, идея положена правильная, но движок надо разгонять :)

TERRORist 19.11.2005 15:20

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

TERRORist 19.11.2005 15:23

сложно это очень. сравно ширину строки "iiiii" и строки "ЩЩЩЩЩ". разница понятна, хотя и там и там по 5 символов. Это вам не хтмл.

Ion 19.11.2005 17:00

Юзать моноширинный шрифт!

iNils 19.11.2005 17:02

Цитата:

Сообщение от Король
"а _width возвращает длинну текста или длинну бокса с его отступами?"

а слабо длину отступов отнять от длины бокса и получить длину текста?

длина текста, вернее ширина, TextField.textWidth

TERRORist 19.11.2005 18:01

А я сразу сказал моноширинный юзать

hlopetz 21.11.2005 08:59

какое-никакое, а решение...
 
Цитата:

Сообщение от flash33
Я уже смотрел на эту ссылку, но что обидно, работает этот скрипт тормозно! Представьте, на странице ~30-50 смайлов, еще неизвесно сколько не отображается...

на основе предложенной статьи делаю поддержку смайлов в чате. написал класс, который управляет TextField'ом (добавление, прокрутка, удаление старых записей). кое-что настраивается через свойства (например по-умолчанию количество смайликов в одном сообщении не должно превышать 5).

использовать так:

1) создать массив _root.SmileName с обозначениями смайлов (типа [":)", ":-)", ":(", ... ] ) и соотвествующие им символы (export for action script) с именами smile0, smile1, smile2 ...

2) создать объект SmileFormat, которому передать в управление текстовой поле, в котором будет отображаться текст чата:
Код:

sf = new SmileFormat(history_txt);
3) добавлять сообщения в чат через инициализированный объект класса SmileFormat:
Код:

sf.addHTMLstring('ваш смешной :) или грустный :( текст здесь :-)');
затариться (328 Кб)

!!! я его еще на закончил, но основная мысля уже здесь есть !!!

Ion 21.11.2005 13:36

Респектно, хотя и слегка косовато...

hlopetz 21.11.2005 13:41

Цитата:

Сообщение от Ion
Респектно, хотя и слегка косовато...

"косовато" - SmileFormat или fla'шка? если второе - то это пробная флэшка. если первое - то иногда неправильно измеряет длину текста, а так - вполне работает...

Ion 21.11.2005 14:21

Смайлы не совсем точно с текстом

KUZEN 21.11.2005 21:09

Неплохо сделано

Ion 21.11.2005 21:10

Ктошш спорит?

ravenco 21.11.2005 21:29

2 hlopetz у тебя получилось быстрее... обгонил, молодца...
и вот тебе смайлик в подарок ;)

hlopetz 21.11.2005 21:57

о, ravenco! старый знакомый! привет!

быстрее - это потому, что начал раньше (можешь дату начала треда глянуть - тогда и приступил). :)

ravenco 22.11.2005 10:55

когда будем тестить?

hlopetz 24.11.2005 13:50

Цитата:

Сообщение от ravenco
когда будем тестить?

боюсь, что никогда. заканчиваю этот проект, перехожу на следующий :(

се ля ви...


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

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