Comunidad de diseño web y desarrollo en internet online

Existe algun problema con muchos addEventListener() ???

Citar            
MensajeEscrito el 26 Ene 2011 04:00 pm
Hola, este es mi primer post y queria hacer una pregunta

resulta que estoy haciendo mi primr juego en AS3, va bien segun parece e intento hacerlo lo más ordenado posible, el problema esque como no se mucho de as3 (pero si de c, por ejemplo) e tenido que resolver problemas con cosas que se me ocurrian a mi.

Bueno la cosa es que en mis codigos he usado varias veces el addEventListener, en varias clases, para crear enemigos, para los movimiento de los enemigos y del personaje, para una funcion que entrega las coordenadas del personaje al enemigo (y que este ultimo lo siga al personaje ), etc.

Mas que me ayuden a corregir mi codigo en especifico, me gustaria que me contaran que tan comun es esto, o si es muy malo para la velocidad del juego, o que tipo de problemas me podria generar, ademas me gustaria saber si a ustedes le sucedio esto cuando estaban empezando con AS3 y que consejos me darian para el uso indebido de addEventListener :D

Por ultimo, y si es normal utilizar tanto addEventListener, me gustaria porfavor que alguien me pudiera orientar en la utilizacion correcta de los parametros de esta funcion (como la prioridad y la fuerza).

Eso :D
de antemano muuuuuuuuchas gracias :)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 26 Ene 2011 05:27 pm
En realidad si haces juegos de acción, conviene tener un loop principal y hacerlo de un modo mas procedural, los listener están mas orientados a UI y en cantidad matarán el rendimiento de tu juego

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Ene 2011 07:03 pm
Puedes hacer un solo listener que responda a eventos más generalizados, incluso te recomendaría usar as3signals, es como los eventos solo que mucho más liviano y permite eliminar y agregar listener de forma muy eficiente.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 27 Ene 2011 04:34 pm
Muchas gracias por las respuestas, estoy evitando usarlos.
actualmente tngo un bucle principal que se activa con ENTER_FRAME y ademas Event listener dentro de la clase disparos, la clase del personaje principal y la clase enemigos, para el movimiento de cada uno

¿¿seria recomendable poner el movimiento de estos objetos en el event listener del bucle??

La verdad con el player es facil pero con los disparos y los enemigos ( que se producen frecuentemente dentro de un array) se complica.

otra consulta, al destruir los childs, no es necesario quitar el event listener de cada objeto??

muchas gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 27 Ene 2011 06:10 pm
EventListener en los disparos ... ¿para que?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Ene 2011 09:59 pm
:( para moverlos: el disparo recibe la pocision "x", "y", "velocidad x" y "velocidad y" del player y de acuerdo a eso en la clase disparo cree una funcion que calcula la direccion que debe seguir el disparo, como un vector y en base a eso le puse una velocidad, que se suma a la posicion del disparo con un event listener para cada FRAME, funciona a la perfeccion... pero parece que ese event listener hace que mi juego se ponga lento luego de un tiempo jugando


los enemigos tambien tienen un event listener que los mueve de una forma parecida a los disparo, solo que esta vez hice una relacion de la pocision del enemigo y la del player para que lo suiguiera.

Como se hace normalmente?


gracias :D

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 27 Ene 2011 10:01 pm
un solo listener debería existir, este debe recibir el identificador del elemento a modificar, así con un solo listener puedes decirle a cualquier objecto que se mueva o haga lo que quieras en cada situación.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

chrome
Citar            
MensajeEscrito el 28 Ene 2011 07:37 am
Ah, la idea es tener una serie de Arrays de "objetos" que, de algún modo "apunten" a tus MCs. Vamos, imagina que tenemos un Objeto con las siguientes propiedades

Código ActionScript :

var obj:Object=new Object()
obj.clase="personaje"
obj.mc=mimc
obj.velx=5
obj.vely=10

Así, tendríamos definidos nuestros personajes, nuestros enemigos y nuestros disparos dentro de un array o dentro de varios arrays de objetos de ese tipo

Código ActionScript :

Array enemigos=new Array()
//por ejemplo tenemos
enemigos.push({clase:"enemigo",mc=AddChild(new Enemigo()),velx:3,vely:2)

En un ENTER_FRAME podemos mover TODOS los objetos

Código ActionScript :


function Movimiento(e:Event){
     for (var i:int=0;i<enemigos.length;i++){
        var item:Object=enemigos[i]
        item.mc.x+=item.velx;
        item.mc.y+=item.vely;
       //Podemos comprobar aquí si chocan o cualquier otra cosa
       //En alguna ocasión deberemos eliminar el elemento del array
       //además de eliminar el MC
       if (...){
          removeChild(item.mc)
          enemigos.splice(i,1);
          i--;
       }
    }
    //También podríamos usar un bucle for each y indexOf en caso de eliminar
     for each (var item:Object in disparos) {
        item.mc.x+=item.velx;
        item.mc.y+=item.vely;
       //Podemos comprobar aquí si chocan o cualquier otra cosa
       if (...){
          var int:i=disparos.indexOf(item)
          disparos.splice(i,1);
       }
}

NOTA:También es posible que los arrays sean únicamente arrays de MCs y ajustar sus propiedades como

Código ActionScript :

item.mc.x+=item.mc.velx

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2011 05:31 am
hola :D
muchas gracias de verdad, se ve muy interesante
tengo que cambiar harto codigo, asi que en cuanto tenga tiempo pruebo

gracias por la ayuda :)
saludos

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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