en tu tuto Carlos
http://www.cristalab.com/tutoriales/239/creacion-de-un-juego-de-pong-en-actionscript-3
citaré
Quería contarte que los uint es en resumen enteros NO negativos de 32 bits (sin signo), y uno (de los tantos) usos es para los valores de color, ya que (aun) no existe colores negativos (espero pronto existan) y NO SOLO para números Hexadecimales en formato 0x. Para una mejor referencia te dejo este link: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/uint.html
luego tu usas:
Código :
var bg:MovieClip = new MovieClip();
Si bien es cierto, funciona, no es correcto ya que has creado un MC solo como contenedor, esto quiere decir que usas la logica de AS2 y no de AS3, y te explico porque:
En tu ejemplo, creas un MovieClip y no usas para nada la linea de tiempo, por ende, consumes recursos innecesarios, esto quiere decir que, si usas AS3, deberías tener un Sprite, que en resumen es un MovieClip sin linea de tiempo, esto, aunque no lo creas, mejora el rendimiento de tu película y ademas, es mas rápido de copilar. Esto se ve muy claramente en los proyectos Flex contra los Proyectos Flash, al crear una clase en Flex para un proyecto AS, verás que te hereda de la Clase Sprite ¿porque? simple, Flex no tiene linea de tiempo
después dice:
Para modificar los Parámetros lo puedes hacer directamente desde la Clase.
Bien, aqui hay dos cosas incorrectas:
1. El uso de stage se puede hacer desde cualquier lado, desde un Document Class como también de una clase importada, todo está en como hacer referencia a tu escenario o raíz (no root), para muestra un botón:
en tu FLA:
Código :
var t:miClase = new miClase(this);
en tu archivo miClase.as
Código :
package{
import flash.display.MovieClip;
public class miClase{
public function miClase(aqui:MovieClip){
trace(true);
aqui.stage.showDefaultContextMenu = false;
trace(aqui.stage.stageWidth);
}
}
}en la ventana de salida
Código :
true 550
2. A tu afirmación "Para modificar los Parámetros lo puedes hacer directamente desde la Clase." estas profesando una mala practica, porque eso sería como decir, en vez de usar clase, usa el código en el FLA, si al final de cuentas, igual meterás mano al código, la idea es que si usas clases estas no sean modificadas y menos por simples y comunes parámetros.
y por último usas:
Código :
timer.addEventListener(TimerEvent.TIMER, playerMovement); timer.addEventListener(TimerEvent.TIMER, enemyAI); timer.addEventListener(TimerEvent.TIMER, ballMovement); timer.addEventListener(TimerEvent.TIMER, checkHit); timer.addEventListener(TimerEvent.TIMER, scoreHandler);
este... aplicas un Timer a cada método de tu clase? porque? si podrías tener todas agrupadas en una, mira la modifiqué e igual funciona y consume mucho menos recursos:
Código :
var timer:Timer = new Timer(1, 0);
timer.addEventListener(TimerEvent.TIMER, activar);
private function activar(event:TimerEvent):void{
playerMovement()
enemyAI()
ballMovement()
checkHit()
scoreHandler()
}y claro en tus métodos puse:
Código :
function ... (event:TimerEvent=null)le puse null para no modificar mucho tu clase, ya que en este caso iría ya sin parámetros.
acabo de ver: tienes todos tus métodos dentro del constructor
Creo que si bien es cierto Clab es una fuente de ejemplos, tips y tutoriales, todos debemos aportar para que AHORA cada entrega sea de mejor calidad, este Tutorial funciona, pero con algunos cambios podría ser aun MEJOR. Y si lo hiciéramos mas orientado a objetos, mejor
Termino este post como lo empecé:
