|
|
|||||
Регистрация: Jul 2011
Сообщений: 34
|
Вспывающая подсказка к тексту
Здравствуйте, уважаемые форумчане.
Задали вот такое задание: 1. Сделать редактируемое текстовое поле. 2. При наведении на какое-либо слово в этом тексте всплывает подсказка (всё что угодно). Вот меня интересует. Подскажите хотябы в какую сторону копать. Как сделать так чтобы вызывалось событие при наведении на слово и обработчику передавалось само это слово? Заранее спасибо. |
|
|||||
Регистрация: Jul 2011
Сообщений: 34
|
Ну так то понятно... только как дать понять функции вызываемой MouseEvent над каким словом мышь зависла?
|
|
|||||
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
Если делать по-хитрому: ловим MouseEvent.DOUBLE_CLICK и получаем _textField.selectedText.
__________________
Нормально делай — нормально будет! |
|
|||||
Регистрация: Jul 2011
Сообщений: 34
|
Хорошая идея с даблкликом. Надо будет запомнить. Но сейчас мне нужно при наведении. ((
|
|
|||||
Не нужны тут ни RegExp, ни DOUBLE_CLICK. По MOUSE_MOVE проверяется над каким символом находится курсор (getCharIndexAtPoint) и в обе стороны от этого символа, в строке, ищутся ближайшие пробелы. После чего вызывается функция показа подсказки.
Sergespb, будет плодить одинаковые темы, получите плюс от модераторов.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jul 2011
Сообщений: 34
|
Цитата:
|
|
|||||
такой вот вараинт
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; } } } } } Последний раз редактировалось silin; 02.08.2011 в 17:35. |
Часовой пояс GMT +4, время: 15:27. |
|
« Предыдущая тема | Следующая тема » |
Теги |
actionscript 3.0 , addeventlistener , MouseEvent , rollOver , textfield |
|
|