Inicio > Actionscript 3, Flash > Tutorial Actionscript 3 – create link button, listeners, addEventListener, events handlers

Tutorial Actionscript 3 – create link button, listeners, addEventListener, events handlers

Este post es para los que estan empezando con actionscript 3 y aun no entienden muy bien el uso de los listeners. Explicandolo muy sencillamente los listener son sensores que podemos agregar a los objetos. Estos sensores nos avisan llamando a una funcion cada vez que cierto evento ocurre.
En as2 podiamos directamente a las instancias decirle:

myObj.onClick() {
 
}

y escribir el comportanmiento.
Para actionscript 3 debemos agregar un listener a la instancia:

myObj.addEventListener(MouseEvent.CLICK, clickHandler);
 
function clickHandler(event:MouseEvent) {
  trace("myObj pressed");
}

Es asi como podemos capturar una infinidad de eventos que largan los objetos. Aca les dejo una pequeña lista de los eventos mas comunes:

Event.ADDED_TO_STAGE
Event.COMPLETE
Event.ENTER_FRAME
Event.INIT
Event.CHANGE
Event.ACTIVATE
Event.ADDED
Event.CLOSE
Event.RESIZE
Event.SELECT

MouseEvent.CLICK
MouseEvent.MOUSE_DOWN
MouseEvent.MOUSE_UP
MouseEvent.MOUSE_MOVE
MouseEvent.MOUSE_OVER
MouseEvent.MOUSE_OUT
MouseEvent.ROLL_OVER
MouseEvent.ROLL_OUT

No todos los objetos dispachan los todos los eventos.

Este seria un ejemplo de como abrir una pagina.

graphicInstance.addEventListener(MouseEvent.CLICK, mouseClick);
 
  function mouseClick(e:MouseEvent) {
    var url:String = "http://www.miguelmoraleda.com";
    var request:URLRequest = new URLRequest(url);
    try {
        navigateToURL(request);
    }
    catch (e:Error) {
        // handle error here
    }
  }



Categories: Actionscript 3, Flash Tags:
  1. vlost
    jueves, 31 de diciembre de 2009 a las 16:23 | #1

    I get a:

    1120: Access of undefined property MouseEvent.

    Am I not including some thing?

    package {
    import flash.display.*;
    import flash.text.*;

    public class HelloDan extends MovieClip {

  2. jueves, 31 de diciembre de 2009 a las 23:14 | #2

    vlost: You are missing the events package.

    import flash.events.*

    Actually, import flash.events.MouseEvent is enough :)

    Happy new year!!

  3. uyanga
    lunes, 25 de enero de 2010 a las 00:55 | #3

    great thanks

  4. lunes, 8 de febrero de 2010 a las 10:14 | #4

    Will you show an example where the listener calls a method within a class, instead of just a procedural function?

  5. lunes, 8 de febrero de 2010 a las 10:25 | #5

    Hi Aaron,

    To use listener within a class is the same as procedural functions. Here I will write a basic example

    package
    {
        import flash.display.*;
        import flash.events.*;
     
        public class ExampleListener extends Sprite
        {
            private var _clip:Sprite;
     
            public function ExampleListener()
            {
                super();
                createClip();
                _clip.addEventListener(MouseEvent.CLICK, clipClicked);
            }
            private function clipClicked(event:MouseEvent)
            {
                trace("Clip Clicked");
            }
            private function createClip()
            {
                //create some draw in the clip and add it to the stage
            }
        }
    }

    I hope this answer your question :)

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes