Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 01.06.2002, 01:30
руль вне форума Посмотреть профиль Отправить личное сообщение для руль Найти все сообщения от руль
  № 1  
руль
 
Аватар для руль

Регистрация: May 2002
Адрес: Литва
Сообщений: 109
Отправить сообщение для руль с помощью ICQ
По умолчанию Как определить координаты курсора

...Ну или на худой конец координаты последней буквы в Text field

Я програмно создаю текст-филд, тама пишу кой-какой текст и мне надо динамически отслеживать координаты курсора (х,у). Я тута перелопатил весь Хелп по флэшу но чет не наткунлся =(.Кто-нить знает возможно ли такое вообще ? (речь идет о ФлэшМХ естесенно)
Заранее благодарен.
__________________
Все что не делается - все к лучшему
Все что к лучшему - то не делается

Старый 02.06.2002, 06:23
Master-Bloodar вне форума Посмотреть профиль Отправить личное сообщение для Master-Bloodar Посетить домашнюю страницу Master-Bloodar Найти все сообщения от Master-Bloodar
  № 2  
Master-Bloodar
 
Аватар для Master-Bloodar

Регистрация: Feb 2002
Адрес: Minsk
Сообщений: 85
Отправить сообщение для Master-Bloodar с помощью ICQ
По умолчанию _xmouse и _ymouse

Координаты мыши можно определить зарезервированными переменными _xmouse и _ymouse. А вот, как определить координаты букв, не знаю.

Старый 02.06.2002, 15:41
руль вне форума Посмотреть профиль Отправить личное сообщение для руль Найти все сообщения от руль
  № 3  
руль
 
Аватар для руль

Регистрация: May 2002
Адрес: Литва
Сообщений: 109
Отправить сообщение для руль с помощью ICQ
По умолчанию поправка

Хех, возможно я несколько некорректно поствил вопрос. Имелись ввиду координаты не того курсора который бегает за мышью а того которым мы пишем в текст-филд (ну палочка такая вертикальная, если видел кто =)
__________________
Все что не делается - все к лучшему
Все что к лучшему - то не делается

Старый 02.06.2002, 16:07
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121

Код:
this.createTextField("tst", 1, 10, 10, 0, 0);
tst.autoSize=true, tst.type="input", tst.variable="test";
noMargins = new TextFormat();
noMargins.leftMargin=0, noMargins.rightMargin=0;
tst.setTextFormat(noMargins);
_root.moveTo(10, 30);
tst.onChanged = function() {
	_root.lineStyle(1);
	_root.lineTo(10+this.textWidth, 30);
};
Selection.setFocus("test");
плюс к этому у текстового поля есть свойство _width, которое выдает ширину баундинг бокса инстанса...

все зависит от конкретной задачи:
например, можно брать Selection.getCaretIndex, загонять сабстринг до этого индекса в поле с авторесайзом и смотреть textWidth
...но наверняка для конкретного случая можно придумать более оптимальный способ...

зы: а в пятерке с рассчетом ширины такой геморрой был... вспомнить страшно...

Старый 02.06.2002, 22:19
руль вне форума Посмотреть профиль Отправить личное сообщение для руль Найти все сообщения от руль
  № 5  
руль
 
Аватар для руль

Регистрация: May 2002
Адрес: Литва
Сообщений: 109
Отправить сообщение для руль с помощью ICQ
По умолчанию ++

Вот мой конкретный случай:
Я прогрмано создаю текст-филд (параметры: Динамик-филд,авторесайз,мультилайн,вордврап), туда время от времени записывается различная чушь. Скрипт в этой чуши ищет сабстринги типа " =) " ну или " =( " и т.д. Далее не место этих смайлов вставляется мувиклип с соответсвующей рожой. Только вот определить координаты для него оказалось сложнее чем я думал.
ЗЫ
Метод который описан выше конечно хитёр, но думаю не совсем подходит тута....
ЗЫЫ
Интересно а возможно ли чисто теоретически определить ширину символов в 5-ке.Тама ведь для этого средствов совсем нету. Хотелось-бы по подробней углубится в т.н. геморрой =)
__________________
Все что не делается - все к лучшему
Все что к лучшему - то не делается

Старый 02.06.2002, 22:35
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 6  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
в пятерке он не "так называемый"... это он и есть во всей красе
там динамически рассчитать длину строки, набранной известным шрифтом можно только приблизительно... очень приблизительно...
даже если измерить в пикселях каждую букву шрифта...

по теме:
вообще, проще наверное текст побить на кусочки... чтобы между каждой парой смайлов было свое текстовое поле...

но можно попробовать так:

– ищешь индексОфом свою строку. (получаешь первый ее индекс)
– берешь сабстринг от нуля до этого индекса
– этот сабстринг помещаешь в пустое текстовое поле с авторесайзом и с такими же параметрами марджинов
– берешь textWidth от этого поля (и получаешь искомое смещение относительно левого края строки)
– чтобы вставить следующий смайл, меряешь то же самое, но уже относительно смайла предыдущего

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


зы: а вообще я не спал давно... может зря таких сложностей нагородил


Последний раз редактировалось Nox Noctis; 02.06.2002 в 22:39.
Старый 03.06.2002, 01:04
руль вне форума Посмотреть профиль Отправить личное сообщение для руль Найти все сообщения от руль
  № 7  
руль
 
Аватар для руль

Регистрация: May 2002
Адрес: Литва
Сообщений: 109
Отправить сообщение для руль с помощью ICQ
По умолчанию +++

Сразу хочу поблагодарить за столь опретивную реакцию на мои реплики .
Насчет сабжа дискуссии:

Вся запара уперается именно в то КАК ОПРЕДЕЛИТЬ СМЕЩЕНИЕ ОТНОСИТЕЛЬНО ЛЕВОГО КРАЯ СТРОКИ.
Смайл в полне может стоять после 3-4 строчек текста (не забываем у нас мультилайн), где-нибудь в середине строки. Если мы вставим текст в текст-филд от начала до смайла то в свой-ве textwidth у нас будет ДЛИНА САМОЙ ДЛИНОЙ СТРОЧКИ но вовсе не смещение от начала строки до смайла
Насчет смещения по вертикали - тута все бонально , т.к. сначала пишется часть текста до смайла, потом сама рожа, далее остаток текста...
__________________
Все что не делается - все к лучшему
Все что к лучшему - то не делается

Старый 03.06.2002, 01:56
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 8  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
все гениальное просто, обратное неверно )

– ищешь индексОфом свою строку. (получаешь первый ее индекс)
– берешь сабстринг от нуля до этого индекса
– берешь ластИндексОф(chr(13)) от полученного сабстринга
– берешь сабстр от полученого в предыдущем пункте индекса
– с помощью авторесайзового поля без вордврапа определяешь ширину полученного поля.
– теперь находишь остаток от деления на ширину исходного поля
––– это и будет твое смещение !..

если кодом, то:

strt = MainString.indexOf("=)", current_index);
victim = MainString.substring(0, strt);
victim = victim.substr(victim.lastIndexOf(chr(13))+1);
// делаем тестовое поле
this.createTextField("tst", 1, 0, -100, 0, 0);
tst.autoSize=true, tst.type="dynamic", tst.variable="test";
noMargins = new TextFormat();
noMargins.leftMargin=0, noMargins.rightMargin=0;
tst.setTextFormat(noMargins);
// поле готово
test = victim;
OFFSET = tst.textWidth - int(tst.textWidth/MainTextfield._width)*MainTextfield._width;

что-то громоздко как-то... но должно работать


Последний раз редактировалось Nox Noctis; 03.06.2002 в 02:01.
Старый 03.06.2002, 02:40
руль вне форума Посмотреть профиль Отправить личное сообщение для руль Найти все сообщения от руль
  № 9  
руль
 
Аватар для руль

Регистрация: May 2002
Адрес: Литва
Сообщений: 109
Отправить сообщение для руль с помощью ICQ
Ну что я могу сказать....ГЕНИАЛЬНО (хотя может и не совсем просто). Сделал вроде все пашет....СПАСИБА
зы
Идея конечно класная но способ не единственный.Можно слегка заоптимизировать =)
__________________
Все что не делается - все к лучшему
Все что к лучшему - то не делается

Создать новую тему   Часовой пояс GMT +4, время: 05:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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