Bienvenido a Klr20mg

Cronicas de un desarrollador

Actualmente soy Jefe de Desarrollo del area Flash en Sapotek de México en la cual trabajo desde hace mas de 4 años. Desarrollando aplicaciones en Flash para Web mas comúnmente llamadas (RIAs)

Estas en : Blog » Simple onReleaseOutSide en AS3
  • Decrease font size
  • Default font size
  • Increase font size
  • color default
  • color verde
  • color azul
Simple onReleaseOutSide en AS3

Una de las tantas cosas que se extrañan de ActionScript 2 son algunos eventos del mouse que son, sin duda, bastante útiles a la hora de trabajar en nuestros proyectos.

El evento que más se extraña es onReleaseOutside, este evento lo uso tanto como los demás así que había que hacer algo al respecto.

Escribí una pequeña clase que detecta dicho evento y lanza el dispatch.

Aquí está la clase.

Actionscript:
  1. package com.tmeister.utils
  2. {
  3.     import flash.display.InteractiveObject;
  4.     import flash.events.MouseEvent;
  5.     import flash.events.Event;
  6.    
  7.     public class MouseEvents
  8.     {
  9.         static public const RELEASE_OUTSIDE = "onReleaseOutside"
  10.         private var target:InteractiveObject;
  11.         function MouseEvents(obj:InteractiveObject)
  12.         {
  13.             target = obj;
  14.             createChildrens();
  15.         }
  16.         private function createChildrens():void
  17.         {
  18.             target.addEventListener(MouseEvent.MOUSE_DOWN, onPress);
  19.         }
  20.         private function onPress(event:MouseEvent):void
  21.         {
  22.             target.addEventListener(MouseEvent.ROLL_OUT, onRollOut);
  23.         }
  24.         private function onRollOut(event:MouseEvent):void
  25.         {
  26.             if(event.buttonDown)
  27.             {
  28.                 target.stage.addEventListener(MouseEvent.MOUSE_UP, onReleaseOutSide);
  29.             }
  30.             target.removeEventListener(MouseEvent.ROLL_OUT, onRollOut);
  31.         }
  32.         private function onReleaseOutSide(event:MouseEvent):void
  33.         {
  34.             if( event.target == target )return
  35.             var nEvent:Event = new Event(RELEASE_OUTSIDE);
  36.             target.dispatchEvent(nEvent);
  37.             target.stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutSide);
  38.            
  39.         }
  40.     }
  41. }

El modo de uso.

Actionscript:
  1. import com.tmeister.utils.MouseEvents;
  2. var boxes:Array = [box0, box1, box2, box3];
  3.  
  4. for each (var box in boxes)
  5. {
  6.     var oros:MouseEvents = new MouseEvents(box);
  7.     box.addEventListener(MouseEvents.RELEASE_OUTSIDE, releaseOut);
  8.     box.addEventListener(MouseEvent.CLICK, click);
  9. }
  10. function releaseOut(evt:Event)
  11. {
  12.     out_txt.appendText("\nRELEASE OUTSIDE "+evt.target.name);
  13. }
  14. function click(evt:MouseEvent)
  15. {
  16.     out_txt.text = "Click Normal "+evt.target.name;
  17. }

Y este el ejemplo final.

Saludos!! 8)

 
Compartir

  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Faves
  • MySpace
  • Pownce
  • Reddit
  • Technorati
  • TwitThis
 
Posibles Posts Relacionados
 
3 Comentarios

Si deseas poner codigo en tu comentario utiliza la etiqueta < pre > < /pre >

Bueno código ;)
Hace un tiempo vi una clase de André Michelle para hacer lo mismo, y además añadía eventos onDragOut, onDragOver: http://www.codigo.as/blog/?p=78

zguillez escribio el 8-October-2007 a las 6:23 pm

Hace un poco también me andaba quebrando el coco tratando de implementar el mentado onReleaseOutside. Muy muy útil :D.

Rafeo escribio el 15-October-2007 a las 7:38 pm

Oye, por cierto... mi blog hace rato nomás no :( .

Rafeo escribio el 15-October-2007 a las 7:43 pm

Subscribete RSS

 Links Patrocinados

 Mini-Posts

Cambios en el Blog, Cambie la barra lateral ahora esta en el lado derecho, ademas de hacer unos cuantos cambios estaticos y sobre todo agrege unos cuantos plugins que me parecen bastante utiles.

Probando otro mini-post

 Sigueme en Twitter

 Categorias

 Archivo