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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Jul 2011
Сообщений: 34
Question Вспывающая подсказка к тексту

Здравствуйте, уважаемые форумчане.

Задали вот такое задание:
1. Сделать редактируемое текстовое поле.
2. При наведении на какое-либо слово в этом тексте всплывает подсказка (всё что угодно).

Вот меня интересует. Подскажите хотябы в какую сторону копать.

Как сделать так чтобы вызывалось событие при наведении на слово и обработчику передавалось само это слово?

Заранее спасибо.

Старый 02.08.2011, 14:17
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 2  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Копай в сторону: MouseEvent, RegExp (выделение строки между пробелами)

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

Регистрация: Jul 2011
Сообщений: 34
Ну так то понятно... только как дать понять функции вызываемой MouseEvent над каким словом мышь зависла?

Старый 02.08.2011, 16:27
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 4  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Если делать по-хитрому: ловим MouseEvent.DOUBLE_CLICK и получаем _textField.selectedText.
__________________
Нормально делай — нормально будет!

Старый 02.08.2011, 16:45
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 5  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Хорошая идея с даблкликом. Надо будет запомнить. Но сейчас мне нужно при наведении. ((

Старый 02.08.2011, 17:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Не нужны тут ни RegExp, ни DOUBLE_CLICK. По MOUSE_MOVE проверяется над каким символом находится курсор (getCharIndexAtPoint) и в обе стороны от этого символа, в строке, ищутся ближайшие пробелы. После чего вызывается функция показа подсказки.

Sergespb, будет плодить одинаковые темы, получите плюс от модераторов.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 02.08.2011, 17:12
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 7  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
Сообщение от Sergespb Посмотреть сообщение
Ну так то понятно... только как дать понять функции вызываемой MouseEvent над каким словом мышь зависла?
Цитата:
TextField.getCharIndexAtPoint(x, y);
Смотрим документацию TextField

Старый 02.08.2011, 17:17
Sergespb вне форума Посмотреть профиль Отправить личное сообщение для Sergespb Найти все сообщения от Sergespb
  № 8  
Ответить с цитированием
Sergespb
 
Аватар для Sergespb

Регистрация: Jul 2011
Сообщений: 34
Цитата:
Sergespb, будет плодить одинаковые темы, получите плюс от модераторов.
Я новичок на форуме. Тема появилась не сразу. Поэтому создал вторую. А удалить нельзя. =( Надеюсь не накажут в первый раз.

Старый 02.08.2011, 17:19
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
такой вот вараинт
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	//import silin.utils.Hint;// http://silin.su/#AS3
 
	public class Main extends Sprite
	{
		private var label:TextField;
		private var currId:int = -1;
		private var wordArr:Array /*String*/;
 
		public function Main():void
		{
			var i:int;
			label = new TextField();
			label.autoSize = TextFieldAutoSize.LEFT;
			label.text = "Необходимо, чтобы при наведении, на какое-либо слово в этом поле всплывала подсказка.";
			addChild(label);
			var tmp:String = label.text;
			// мяняем пунктацию на пробелы
			var nonWordChars:Array = [',', ';', '.'];// !,=,+,...или что там нужно еще
			for (i = 0; i < nonWordChars.length; i++) 
			{
				tmp = tmp.split(nonWordChars[i]).join(" ");
			}
			// массив слов
			wordArr = tmp.split(" ");
 
			//Hint.register(stage);
			addEventListener(Event.ENTER_FRAME, enterFrame);
 
		}
 
		private function enterFrame(e:Event):void
		{
			var charIndx:int = label.getCharIndexAtPoint(mouseX, mouseY);
			if (charIndx < 0)
			{
				currId = -1;
				return;
			}
 
			var wordIndx:int = 0;
			var charCount:int = wordArr[0].length;
 
			while (charCount < charIndx && wordIndx < wordArr.length - 1)
			{
				charCount += wordArr[++wordIndx].length + 1;
			}
 
			if (wordIndx != currId)
			{
				var word:String = wordArr[wordIndx];
				if (word != "")
				{
					trace("word : " + word);
					//Hint.show(word);
					currId = wordIndx;
				}
 
			}
		}
	}
}
поправил: не надо удалять пустые элементы из массива слов (путаница будет, потому как в getCharIndexAtPoint они соответствуют реальным символам)


Последний раз редактировалось silin; 02.08.2011 в 17:35.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
actionscript 3.0 , addeventlistener , MouseEvent , rollOver , textfield
Опции темы
Опции просмотра

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

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


 


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


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