Comunidad de diseño web y desarrollo en internet online

Mensaje contextual

Citar            
MensajeEscrito el 26 Dic 2011 10:43 am
hola amigos.

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

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Dic 2011 01:44 pm
Ok, movido a aportes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.