Comunidad de diseño web y desarrollo en internet online

dispatchEvent s.o.s.

Citar            
MensajeEscrito el 21 Jun 2007 07:08 pm
Hola,

Llevo unos días peleándome con actionscript para poder generar un evento dentro de mi clase y no lo consigo.

Este es el código que está dentro de mi clase:

Código :

import mx.events.EventDispatcher
class xxx
{
    var addEventListener:Function;
    var removeEventListener:Function;
    var dispatchEvent:Function

    function xxx()
    {
        EventDispatcher.initialize(this);
    }
    .
    .
    .
    function yyyy():Void
    {
        //realiza las operaciones tras ser llamada
        trace(dispatchEvent({type:"completado", target:this}))
    }
}


Y ahora el código en mi fla:

Código :

import xxx

this.createEmptyMovieClip("v1",this.getNextHighestDepth())
main=new xxxx(parametros)

var objeto:Object=new Object()
objeto.completado= function (evtObj)
{
   trace ("blabla")
}


v1.addEventListener('completado',objeto)




Y nada, no funciona, compila sin problemas pero no consigo difundir el evento. Como nota, la traza del dispatchEvent devuelve undefined.

¿Sabéis qué puede estar fallando?

Gracias.

Por mcnach

9 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jun 2007 11:08 pm

Código :

import mx.events.EventDispatcher;
class myclass {
   var addEventListener:Function;
   var removeEventListener:Function;
   var dispatchEvent:Function;
   function myclass() {
      EventDispatcher.initialize(this);
   }
   function foo():Void {
      //realiza las operaciones tras ser llamada
      trace("Call yyyy") // Algo para saber que se ejecuto este metodo
      dispatchEvent({type:"completado", target:this});
   }
}


Código :

import myclass;
var main:myclass = new myclass();
var objeto:Object = new Object();
objeto.completado = function() {
   trace("blabla");
};
main.addEventListener('completado', objeto); //
main.foo();// mandamos llamar el metodo


Fijate en la lógica del código, que te pongo, y comparalo con el tuyo

ahora respecto a lo que pones
trace(dispatchEvent({type:"completado", target:this}))
el dispatchEvent, no va dentro del trace

v1.addEventListener('completado',objeto) v1 es un movieclip, pero el registro del evento no va aqui, va en la instancia de tu clase, osea iria en main.addEventListener('completado',objeto)

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

opera
Citar            
MensajeEscrito el 30 Jun 2007 10:54 am
Muchas gracias!! No me fijé en lo más sencillo, no sé por qué daba por hecho que estaba añadiéndole el listener al objeto y no al clip :)

Con respecto al trace, era para ver si me devolvía algo la función, pero en este caso devuelve undefined.

Muchas gracias por tu ayuda.

Un saludo!

Por mcnach

9 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Abr 2009 10:20 pm
Heyyy
Muy concreta tu solucion, Muchas gracias, llevaba un par de horas sufriendo por implementar un onLoad de un XML en una clase
:love:

Por Millertaker

0 de clabLevel



 

firefox

 

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