Soy nuevo en este foro preo lo he seguido muy de cerca, tanto en mis comienzos de aprendizaje como en la programación avanzada de as3. Mis desarrollos los elaboro ahora mismo con "Adobe Flash Profesional CS5".
Aclaro lo que es un mensaje contextual: en Microsoft lo llaman "ToolTip" y en Borland "Hint" ; es un mensaje que sale cuado estas mucho tiempo encima del Objeto apuntando con el raton.
Bueno, aqui os dejo una muestra de lo que hago, y me gustaria saber vuestra opinion, si es viable y sin mas rodeos os dejo el codigo:
Código ActionScript :
package { import flash.display.DisplayObject; import flash.utils.setInterval; import flash.utils.clearInterval; import flash.text.TextField; import flash.text.TextFormat; import flash.events.MouseEvent; public class MensajeContextual { private var _Objeto: DisplayObject; private var _Texto: String; private var _Fuente: TextFormat; private var _Activado: Boolean; private var _Mensaje: TextField; private var Intervalo: uint; private var Retardo: Number= 1500; public function MensajeContextual (Objeto: DisplayObject, Texto: String, Fuente: TextFormat= null) { this.Objeto= Objeto; this.Texto= Texto; this.Fuente= Fuente; Activado= true; } public function set Objeto (Valor: DisplayObject): void { if (_Objeto!=null) QuitarEventos(); _Objeto= Valor; if (_Objeto!=null) PonerEventos(); } public function get Objeto (): DisplayObject { return _Objeto; } public function set Texto (Valor: String): void { _Texto= Valor; } public function get Texto (): String { return _Texto; } public function set Fuente (Valor: TextFormat): void { _Fuente= Valor; } public function get Fuente (): TextFormat { return _Fuente; } public function set Activado (Valor: Boolean): void { _Activado= Valor; if (Valor) PonerEventos() else QuitarEventos(); SalirObjeto(null); } public function get Activado (): Boolean { return _Activado; } private function PonerEventos (): void { _Objeto.addEventListener(MouseEvent.MOUSE_OVER, EntrarObjeto); _Objeto.addEventListener(MouseEvent.MOUSE_OUT, SalirObjeto); _Objeto.addEventListener(MouseEvent.MOUSE_MOVE, MoverMensaje); _Objeto.addEventListener(MouseEvent.CLICK, ClickObjeto); } private function QuitarEventos (): void { _Objeto.removeEventListener(MouseEvent.MOUSE_OVER, EntrarObjeto); _Objeto.removeEventListener(MouseEvent.MOUSE_OUT, SalirObjeto); _Objeto.removeEventListener(MouseEvent.MOUSE_MOVE, MoverMensaje); _Objeto.removeEventListener(MouseEvent.CLICK, ClickObjeto); } private function EntrarObjeto (e: MouseEvent): void { Intervalo= setInterval(PonerMensaje,Retardo); } private function SalirObjeto (e: MouseEvent): void { clearInterval(Intervalo); if (_Mensaje!=null) { _Objeto.stage.removeChild(_Mensaje); _Mensaje= null; } } private function MoverMensaje (e: MouseEvent): void { if (_Mensaje!=null) { _Mensaje.x= _Objeto.stage.mouseX; _Mensaje.y= _Objeto.stage.mouseY-_Mensaje.height; AjustarMensaje(); } } private function ClickObjeto (e: MouseEvent): void { SalirObjeto(e); Intervalo= setInterval(PonerMensaje,Retardo); } private function PonerMensaje(): void { clearInterval(Intervalo); _Mensaje= new TextField(); if (Fuente!= null) _Mensaje.defaultTextFormat= Fuente; _Mensaje.autoSize= "left"; _Mensaje.border= true; _Mensaje.borderColor= 0x000000; _Mensaje.background= true; _Mensaje.backgroundColor= 0xFFFFCC; _Mensaje.selectable= false; _Mensaje.mouseEnabled= false; _Mensaje.text= Texto; _Mensaje.x= _Objeto.stage.mouseX; _Mensaje.y= _Objeto.stage.mouseY-_Mensaje.height; AjustarMensaje(); _Objeto.stage.addChild(_Mensaje); } private function AjustarMensaje(): void { if (_Mensaje!=null) { if (_Mensaje.y+_Mensaje.height>_Objeto.stage.stageHeight) _Mensaje.y= _Objeto.stage.stageHeight-_Mensaje.height; if (_Mensaje.y<0) _Mensaje.y= 0; if (_Mensaje.x+_Mensaje.width>_Objeto.stage.stageWidth) _Mensaje.x= _Objeto.stage.stageWidth-_Mensaje.width-5; if (_Mensaje.x<0) _Mensaje.x= 0; } } } }
y para utilizarlo seria:
Código ActionScript :
var Objeto: Sprite= new Sprite() //.. poner algo en el Sprite para que se vea this.addChild(Objeto); var Mensaje: MensajeContextual= new MensajeContextual(Objeto,"Hola mundo.\nHola Cristalab)
saludos a todos