Entradas con la etiqueta ‘despachar’

JS – Emitir eventos con EventTarget

Publicado por Iván Gajate el 4 de diciembre de 2020 en Desarrollo Web, Eventos, JavaScript | Los comentarios están cerrados.

Con esta API relativamente nueva de JavaScript podemos hacer que nuestros propios objetos emitan eventos como lo haría un elemento nativo del DOM.

La definición es un poco escueta, pero es que es tan simple de usar que parece mentira ;p

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget

// MyClass.js
class MyClass extends EventTarget {
    myMethod() {
        this.dispatchEvent(new CustomEvent('my-custom-event', {
            detail: 'Contenido que se envía en el evento'
        }));
    }
}

// Para usarlo
const myObject = new MyClass();
myObject.addEventListener('my-custom-event', (event) => {
    console.log(event); // Evento completo con el detail
});

Emitir eventos personalizados en AS3 (I)

Publicado por Iván Gajate el 9 de noviembre de 2008 en AS3, Flash, Tutoriales | 23 comentarios »

Ahora en AS3 es mucho mas fácil emitir un evento personalizado desde un objeto y recogerlo con un listener. Se hace mediante dispatchEvent.

Al igual que cuando queremos recoger el evento de ratón mouseDown lo hacemos así:

import flash.events.MouseEvent;

boton_btn.addEventListener("mouseDown", botonPulsado);

function botonPulsado(evento:MouseEvent):void{
	trace("Boton pulsado!!");
}

también podemos hacer que nuestros objetos emitan eventos para que otros objetos puedan recogerlos con un listener.

En AS3 todos los objetos que hereden de alguna subclase de DisplayObject (todos los de la lista de visualización) pueden emitir eventos, con lo que si nuestra clase extiende de Sprite, que será lo mas normal, pues ya podemos hacerlo.

Para emitir un evento haremos esto:

dispatchEvent(new Event("accionTerminada"));

donde accionTerminada es nuestro evento personalizado. Para recoger este evento usamos un listener:

import flash.events.Event;

emisor.addEventListener("accionTerminada", onAccionTerminada)

function onAccionTerminada(evento:Event):void{
	trace("Accion Terminada");
}

Leer el resto de esta entrada