Comunidad de diseño web y desarrollo en internet online

Funciones que responden a Eventos

Citar            
MensajeEscrito el 27 Nov 2007 01:57 pm
Hola, les queria consultar lo siguiente..
Cuando...

Código :

objeto.addEventListener(MouseEvent.CLICK, [b]funcionClick[/b]);


en el caso anterior, en el evento Click se ejecuta la funcion funcionClick, pero la pregunta es cuando la funcionClick realiza un return dato; ese return a donde devuelve la info, como puedo seguir trabajando con ese dato devuelto por la funcion. (espero explicarme bien)

Por otro lado, cuando la funcion funcionClick se termina de ejecutar, para ese entonces el supuesto codigo que habría debajo del addEventListener se ejecuto hace rato y sin la respuesta de funcionClick.

Si no me entienden??, mas tarde les paso un codigo que debido a esto no puedo continuar, gracias!

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

msie
Citar            
MensajeEscrito el 27 Nov 2007 03:44 pm
Algo así ?


Código :

b.addEventListener(MouseEvent.CLICK,clickea);

function clickea(e:MouseEvent):String{
   trace("Clickea");
   return "Cadena";
}


Mmmmmm, parece que se lo traga :? (alguien que nos saque de esa duda?).

La función listener sí leí que sólo puede recibir 1 parámetro (que es el tipo de evento).

Por Rafeo

650 de clabLevel

3 tutoriales
1 articulo

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Nov 2007 03:51 pm
Claro ese tipo de cosas, por ejemplo a donde va a parar ( return "cadena"; ) en tu ejemplo ?? se pierde en la nada? talvez funcione asi, pero mi pregunta es como hago para que un listener ejecute una funcion y esa funcion devuelva un dato para poder continuar trabajando.

.....?

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

msie
Citar            
MensajeEscrito el 27 Nov 2007 04:11 pm
Es imposible que una funcion que esta escuchando pueda devolver algo, ademas , que caso tendria :?... creo que tienes que plantearte otra forma de resolver el problema, por cierto, que tienes en mente hacer ?

salu2. ^^

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 27 Nov 2007 04:31 pm
En mi caso particular, te lo explico, pero cuando llegue a casa subo el codigo asi se entiende mejor, lo que hice fue una clase que al ser llamada carga un .txt externo.
El evento esta en addEventListener(Event.LoadComplete, funcion); o algo asi.....y ahi deriba a otra funcion.

Esta 2da funcion lo que hace es crear un array con el contenido del target.data , split de todo el contenido por "," y en ese nuevo array tengo un listado de datos que los quiero devolver o mostrar a traves de un for

for(var i:uint = 0; i<array.length; i++){
campoText.text = array[i];
}

el tema es que no se que hacer, porque estoy dentro de una funcion privada,
- si hago un return del array , quien los recibe?
- si los quiero mostrar directamente desde la segunda funcion, no puedo, porque no me deja acceder al listado de visualizacion y me dice que el textField que estoy escribiendo no lo encuentra.

Estoy seguro que es un error de falta de conocimiento, pero queria saber cual es la mejor opcion, devolver los datos a donde se llamo la 2da funcion a traves de return o intentar mostrarlos al stage desde esa 2da funcion.
(los volvi locos?? jaja aj)

Gracias y slds

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

msie
Citar            
MensajeEscrito el 27 Nov 2007 05:23 pm
Bueno aqui te mando una de las formas en que puedes resolver el problema.

primero creas una clase que se encargue de leer el .txt [en el caso que te pongo lo que hace es llenar con unos datos el array para no hacer dificil la cosa..!

Joris.as

Código :

package
{
   import flash.events.EventDispatcher;
   
   public class Joris extends EventDispatcher
   {
                private var misDatos : Array = new Array();
      public function Joris():void
      {
         //Constructor...!
      }
      
      public function addDatos():void
      {
         alimentaDatos();
      }
      
      private function alimentaDatos():void
      {
         misDatos.push("Joris1","Joris2","Joris3"); //Agrego un elemento nuevo a misDatos.
         //En tu caso seria el proceso de partido por , y esas cosas ...
         
         //-- Ah por que ya termine de llenar el arreglo...
         //Lanzo un evento de que ya termine de cargar los datos. 
         dispatchEvent(new miEvent("termine_de_cargar_datos", misDatos));         
      }
   }
}


fijate que la clase hereda de EventDispatcher, lo la clase sera capaz de despachar eventos.. [Joris.as]

miEvent.as

Código :

package
{
   import flash.events.Event
   public class miEvent extends Event
   {
      public var datos:Array = new Array();
      
      public function miEvent(type:String, datos:Array):void
      {
         this.datos = datos; 
         super(type);
      }
   }
}


y por ultimo el primer frame de la pelicula Flash...

Código :

import Joris;
var f:Joris = new Joris();
f.addEventListener("termine_de_cargar_datos", recibeN);
f.addDatos();

function recibeN(e:miEvent):void
{
   
   a1.text = e.datos[0];
   a2.text = e.datos[1];
   a3.text = e.datos[2];
}



ahh por supuesto, a1,2,3 son textInput que estan en el Stage previamente, los puedes crear dinamicamente o como tu quieras....

esto solo es para que tengas una idea del mecanismo, este codigo se puede refinar mucho mas .. ;-)

espero que hayas entendido ^^

salu2 ^^

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 27 Nov 2007 05:48 pm
Muchisimas gracias por la dedicacion para explicar a detalle!!!, ok entonces la idea es separar la funcion que carga el .txt externo, de la que devuelve los datos al .fla ambas en dos clases diferentes... ok!

- Nunca use dispatchEvent, pero quedo clarisimo, cuando se usa este "despachar evento" es por eso que en el .fla pusiste un f.addEventListener no ??? OK!!

Lo que no me termina de quedar claro es super(type);
...corregime si me equivoco.... esto le esta diciendo a la clase padre de miEvent.as (Event) que el type = "termine_de_cargar_datos" y esto es lo que recibe f.addEventListener ???

Gracias de nuevo slds

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

msie
Citar            
MensajeEscrito el 27 Nov 2007 06:02 pm
Si, claro, en la clase Joris despacho el evento con dispatchEvent, y claro, en el .fla tengo que estar atento escuchando a cuando el objeto Joris diga : "termine_de_cargar_datos",para eso es el addEventListener...

lo segundo, si, estas llamando al constructor de la clase Event. [clase padre] para decirle el type.
PD: super te sirve para llamar a metodos de la superclase [clase de la cual heredas]. podrias poner super.algunMetododeEvent(dsfdfd); por ejemplo.

salu2 ^^

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox

 

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