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);