www.cristalab.com/tutoriales/ejemplo-de-guia-para-mapas-en-juegos-tipo-mario-3-c48015l/
el problema es que el tutorial está en AS3, y no lo domino muy bien.
He intentado traducir el código a AS2 y ya casi casi funciona, pero no a la perfección.
Éste es el código que he hecho:
Código ActionScript :
var enMovimiento:Boolean = false;
var contactoConCamino_Arriba:Boolean;
var contactoConCamino_Abajo:Boolean;
var contactoConCamino_Izquierda:Boolean;
var contactoConCamino_Derecha:Boolean;
velocidad = 2;
function Mario()
{
lineas._visible = true;
puntos._visible = true;
var temporizador = setInterval(mover(), 10);
function comenzarIntervalo():Void
{
temporizador = setInterval(this, "mover", 10);
}
}
function mover()
{
if (Key.getCode() == 39 && this.contactoConCamino_Derecha == true) // 39 es DERECHA
{
mario._x += velocidad;
}
if (Key.getCode() == 37 && this.contactoConCamino_Izquierda == true) // 37 es IZQUIERDA
{
mario._x -= velocidad;
}
if (Key.getCode() == 38 && this.contactoConCamino_Arriba == true) // 39 es ARRIBA
{
mario._y -= velocidad;
}
if (Key.getCode() == 40 && this.contactoConCamino_Abajo == true) // 40 es ABAJO
{
mario._y += velocidad;
}
for (var i in puntos)
{
// En el mc llamado mario hay un MC llamado centro que sirve como detector..
// ... de colisiones
// Si centro colisiona con cualquier punto se detiene
if (mario.centro.hitTest(puntos[i]))
{
clearInterval(temporizador);
enMovimiento = false;
}
}
}
function palparCaminos()
{
for(var i in lineas)
{
if (mario.arriba.hitTest(lineas[i]))
{
this.contactoConCamino_Arriba = true;
}
if (mario.abajo.hitTest(lineas[i]))
{
this.contactoConCamino_Abajo = true;
}
if (mario.izquierda.hitTest(lineas[i]))
{
this.contactoConCamino_Izquierda = true;
}
if (mario.derecha.hitTest(lineas[i]))
{
this.contactoConCamino_Derecha = true;
}
}
}
function tecla()
{
if (enMovimiento == false)
{
this.contactoConCamino_Arriba = false;
this.contactoConCamino_Abajo = false;
this.contactoConCamino_Izquierda = false;
this.contactoConCamino_Derecha = false;
palparCaminos();
comenzarIntervalo();
enMovimiento = true;
}
}
onEnterFrame = function ()
{
tecla();
Mario();
}
En concreto el fallo es que el personaje no se para en todos los puntos, sino en los que hacen esquina.
Lo que no he sabido "traducir" de AS3 a AS2 es esta línea:
stage.addEventListener (KeyboardEvent.KEY_DOWN, tecla);
