Показать сообщение отдельно
Старый 04.05.2011, 14:45
alexmihel вне форума Посмотреть профиль Отправить личное сообщение для alexmihel Найти все сообщения от alexmihel
  № 4  
Ответить с цитированием
alexmihel

Регистрация: Apr 2011
Сообщений: 22
Спасибо за ответ! Я немного модифицировал данный код и получил возможность обрабатывать множество ссылок в текстовом поле и выводить спрайт у курсора. Но еще одна задача - как получить значение ссылки (href) на которую мы наводим?

Код AS3:
 
package {
 
 
	import flash.display.Sprite;
	import flash.events.*;
	import flash.text.*;
 
	public class Main extends Sprite {
 
		private var label:TextField = new TextField();
		private var hint:Sprite = new Sprite();
		private var checkIndx:int;
		private var onLink:Boolean;
 
		public function Main():void {
 
			var style:StyleSheet = new StyleSheet();
			style.setStyle("a", { color:"#0000FF" } );
			style.setStyle("a:hover", { color:"#008000" } );
 
			label.styleSheet = style;
			label.autoSize = TextFieldAutoSize.LEFT;
			label.htmlText = "подсказка на <a href='http://google.com'>ссылке</a> и еще одна <a href='http://google.com'>ссылка</a> ";
			label.y = 30;
 
			onLink = false;//flag
 
 			trace(checkIndx );
 			label.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove1);
			addChild(label);
		}
 
		private function addHint(hintX:int, hintY:int, src:String=""):void {
			hint.graphics.beginFill(0xFF8040);
			hint.graphics.drawRect(0, 0, 60, 60);
			hint.x = hintX;
			hint.y = hintY + 45;
			addChild(hint);//показываем подсказку
		}
		private function onMouseMove1(event:MouseEvent):void {
			var fmt:TextFormat = event.target.getTextFormat(event.target.getCharIndexAtPoint(event.localX,event.localY));
			var currState:Boolean = (fmt.color == 0x008000);
 
			if (currState != onLink) {
				onLink = currState;
				if (onLink) {
					addHint(event.localX, event.localY);
				}else {
					removeChild(hint);//прячем
				}
			}
 
		trace(event.target.getCharIndexAtPoint(event.localX,event.localY));
 
		}
	}
}