PDA

Просмотр полной версии : Текстовое поле


MAXIM_IDEAL
09.12.2005, 20:46
Как определить координату (х,у) символа в текстовом поле с условием что текст многострочный, динамический, включен автоматический перенос слов (wordWrap=true), ширина зафиксирована, а высота изменяется динамически от того сколько сторк потянет.
Те. нужна функция на вход номер символа в тексте, сам текст,
ширина текста, объект TextFormat для всего текста
На выход: х и у символа относительно левого верхнего угла текстового поля.
Эта функция мне нужна для вставки смайликов...
Может кто сталкивался с подобной задачей?
Подскажите хотябы какие встроенные свойства объекты и методы для этого использовать.... Заранее благодарю. :)

Antares
09.12.2005, 21:52
Есть класс TextSnapshot (http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001851.html), но он для текста статического. Я бы посоветовал сделать так: просто смотреть при помощи getTextExtent размеры поля для строки, на символ короче нужной (т.е. для строки "Мама мыла раму" надо определить позицию ы -- тогда смотрим размеры "Мама м"), плюс отступ. Однако если надо организовать поиск в строке, допустим, номер 2, ситуация сложнее.

Тогда придется определять строку руками. Я бы поступил так: определял ширину по словам до момента, когда она больше wrap limit, как только больше -- начинаем заново для следующей части текста, а число строк инкременируем.

Вообще задача более чем решаема и весьма интересна. Но приготовься, что все не так просто, как хотелось бы :)

Sh@man
09.12.2005, 23:14
Недавно эта тема поднималась. Надо поискать по форуму. Решение такой задачи во флеше действительно непростое.

MOHCTEP
09.12.2005, 23:27
http://www.delphimaster.ru/articles/flash/index.html

Antares
09.12.2005, 23:35
http://www.delphimaster.ru/articles/flash/index.html
Каким боком этот туториал связан с темой треда?

MOHCTEP
09.12.2005, 23:51
Каким боком этот туториал связан с темой треда?
Боком вставки смайлов в любое (теоретически) место текстфилда. Стало быть, алгоритм или его суть пригодится человеку.

Antares
10.12.2005, 01:07
Вставка смайлов реализуется банальной заменой :) Заменой на тэг, содержащий ссылку на объект в библиотеке/URL. И все.

Nirth
10.12.2005, 01:38
Вообще да, но автор статьи не юзал банальности, но то что он сдела и решением правильным назвать нельзя. вобщем читайте главу 8 может быть подчерпнете что нибудь, но очень не советую

MAXIM_IDEAL
10.12.2005, 12:48
Спасибо Вам за помощь :)
С текстом возиться - дело не легкое,
надо разузнать еще все паравила переноса слов
на другую строку, чтобы это дело вручную производить,
например, как быть если одно слово будет длинее допустимой ширины,
и еще масса заковыристых вариантов...
надо самомому тепрь все проанализировать
и рассмотреть предложенные Вами материалы и советы.

MAXIM_IDEAL
11.12.2005, 11:58
Насчет растановки смайлов....
Я так понял, что эта задача нерешабельна изящным образом,
поэтому я решил плюнуть, и поступить вот как, т.к. чат мне все
равно надо будет внедрять в html или php страницу, то я размещю
вложенный фрейм (<iframe>) поверх флаш чата (<embed src="chatVideo.swf">), и буду из флаш файла передавать данные
в этот вложенный фрейм через связку actionScript - JavaScript.
Интересное решение, не правда ли? ;)