2009-12-06 20 views
7

Hola a todos, quiero saber lo que es dispatchEvent en AS3. No tuve la menor idea al buscar en Google. :( Así que por favor me ayude¿Qué es dispatchEvent en Flash AS3?

Edición 1:

public static const SET_VOLUME:String = "setVolume"; 

private function onclick(evt:MouseEvent):void { 
      soundClip.scaleX = 0; 
      dispatchEvent(new Event(SET_VOLUME)); 

     } 

qué tiene esto significa ?? (

+1

@coderex, ¡por favor marque sus preguntas como respondidas cuando sean respondidas! – alecmce

Respuesta

3

Básicamente se trata de un mecanismo para notificar a los objetos que algo ha ocurrido Al enviar una. evento, algo tiene que estar escuchando para ese evento.

Básicamente es como hacer una llamada telefónica (dispatchEvent (nuevo CallEvent (CallEvent.CALL))). Si la persona que está tratando de no está, no están escuchando el evento telefónico, por lo que no pueden hacer nada al respecto. Si están en (addEventListener (CallEvent.Call, answerHandler)), pueden responderlo, tal vez enviarlo directamente al correo de voz.

Para un resumen completo, intente leer este artículo de adobe.

http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_02.html

Una gran cantidad de lenguajes de programación hacen uso de los acontecimientos por lo que es muy vale la pena llegar a enfrentarse con él.

James

Respuesta a Edit1

Se ve a mí como que tiene un método que ha sido creado para manejar una MouseEvent.Click en algún objeto en alguna parte. Cuando eso sucede, establece la propiedad scaleX de otros objetos en 0 (lo que lo hace invisible). A continuación, se distribuye un nuevo evento con el tipo establecido en "setVolume". Esto por sí solo no haría nada. En otra parte, esta es probablemente una línea que se parece un poco a addEventListener ("setVolume", doSomethingMethod); . Cuando se dispara el método original (aparentemente un clic del mouse), doSomethingMethod debe dispararse.

+0

ok tengo una duda, por favor revisa mis preguntas edición 1: sección – coderex

+0

Cuando se llama a onclick(), se levantará "setVolume", notificando a cualquier suscriptor (suscrito a "setVolume" llamando a addEventListener). –

14

¿Un ejemplo podría ayudar? Si tiene Flash IDE, intente esto en su línea de tiempo:

var ball:Shape = new Shape(); 
ball.graphics.beginFill(0xFF0000); 
ball.graphics.drawCircle(0, 0, 30); 
ball.graphics.endFill(); 
addChild(ball); 

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener); 
addEventListener("myCustomEvent", myCustomEventListener); 

function mouseMoveListener(event:MouseEvent):void 
{ 
    dispatchEvent(new Event("myCustomEvent")); 
} 

function myCustomEventListener(event:Event):void 
{ 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
} 

Se trata de código se muestra cómo el addEventListener y dispatchEvent son homólogos. El evento MOUSE_MOVE se distribuye internamente, pero puede enviar sus propios eventos al igual que MOUSE_MOVE utilizando dispatchEvent.

Lo que sucede en este código es que un MOUSE_MOVE de la etapa se detecta, pero en lugar de manejar que en el mouseMoveListener, que se envían otro evento (llamado myCustomEvemt) que se maneja en el myCustomEventListener en lugar. Funciona igual que el evento MOUSE_MOVE, solo usted envió el evento en lugar del reproductor flash.

Espero que esto ayude.

4

Supongamos que hay dos clases: A y B. Ahora quiere que "functionAfterMyFun" ocurra después de que myFun haya ocurrido en la clase B. Luego, usaría dispatchEvent en la función myfun() de la clase B.

class A 
{ 

function A() 
{ 
    objectOfB.addEventListener("myFun_Happened", functionAfterMyFun) 
} 

function functionAfterMyFun() 
{ 
    //do something after myFun has happened in class B 
} 

} 

class B 
{ 
function myfun() 
{ 
dispatchEvent(new Event("myFun_Happened")); 
} 


} 
+0

1067: coerción implícita de un valor de tipo Cadena a un tipo no relacionado flash.events:Event. :(¿Me falta una importación? –

+0

ah, lo siento, había un error tipográfico. Lo he editado de nuevo. dispatchEvent (new Event ("myFun_Happened")); –

-1

addaddEventListener() es como para hacer que su acuerdo prenupcial.
Por ejemplo, si su esposa tiene otro hombre fuera, recibirá $ 100 de su esposa. Afortunadamente, eso sucede.
dispatchEvent() significa que obtendrá $ 100.

Cuestiones relacionadas