Estoy desarrollando un juego de disparos en flash, consta de un robot que gira en su propio eje, tengo los siguientes archivos
game.as
robot.as
mira.as
municion.as
game.as se encarga de controlar el juego, agregar los elementos, stop, continue, etc…
robot.as tiene las acciones de disparar y rotar
mira.as controla el movimiento de la mira del arma
municion.as es la clase que va atada a cada bala, la mueve y comprueba colisiones
Ahora bien, podría hacer los "loops y eventos" de 2 formas diferentes
1. hacerlos todos en game.as
Código:
De esta primera forma tendría 1 solo ENTER_FRAME, MOUSE_MOVE y MOUSE_DOWN, y en cada uno colocaría todas las callbacks que disparan esos eventos, ejemplo.addEventListener(Event.ENTER_FRAME, loopGame); addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
Código:
private function mouseMoveHandler(e:MouseEvent) { this.myMira.move(e); this.myRobot.rotate(e); }
Código:
private function loopGame(e:Event):void { this.updateMuniciones(); //recorre todas las municiones, actualiza su posición y comprueba colisiones this.updateEnemigos(); //recorre todas los enemigos y actualiza su posición }
2. Hacerlo dentro de cada objeto
De esta forma tendría los listeners dentro de cada objeto del juego, por ejemplo
Robot.as tendría un MOUSE_MOVE propio para rotar
Código:
mira.as, tendría un MOUSE_MOVE propio para mover su posiciónstage.addEventListener(MouseEvent.MOUSE_MOVE, rotate);
Código:
dentro de cada bala tendría un ENTER_FRAME propio que cambiaría su posición actual y comprobaría colisionesstage.addEventListener(MouseEvent.MOUSE_MOVE, mover);
Código:
A nivel de practicidad y rendimiento ¿Cuál de los 2 métodos es el correcto y porque?this.addEventListener(Event.ENTER_FRAME, updateBala);
Si alguien conoce un manual, libro de buenas practicas o patrones de diseño en AS3 le agradeceria el dato :)
Espero haberme explicado bien, gracias