Nuevamente por aqui con algunos problemas de AS3, pero en paticular tengo uno que al final no entiendo que pasa. Estamos haciendo un juego que nos permita enseñar a recolectar basuras y depositarlas en nuestros contenedores. Aqui les dejo una prueba al juego: http://aulavirtual.udenar.edu.co/proyectojad/prueba/
Hasta el momento estamos bien, sin embargo nos falta programar algunas cosas. Sin embargo tengo un problema que pueden ver en la prueba y es que cuando esta el mensaje de instrucciones y le doy en el boton jugar debería empezar a mover el personaje, pero éste no se mueve con las teclas hasta que le de clic al escenario y allí si arranca. No entiendo este problema ya he hecho muchas cosas e incluso intente un removeListener, pero no lo logre solucionar.
Dejo a disposición el código de este problema:
Clase Admin.as (es el Main):
Código ActionScript :
package com.principal { import flash.display.MovieClip; import flash.display.Stage; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; import fl.transitions.*; import fl.transitions.easing.*; import flash.display.SimpleButton; import flash.events.MouseEvent; public class Admin extends MovieClip { public static var personaje:Personaje; public static var mensajeinstr:MensajeInstrucciones = new MensajeInstrucciones();; public static var habilitateclas:Boolean = false; // FUNCION CONSTRUCTORA public function Admin ():void { stage.addChild(mensajeinstr); mensajeinstr.x = 400; mensajeinstr.y = 150; mensajeinstr.btnJugar.addEventListener(MouseEvent.MOUSE_DOWN, iniciaJuego); } private function iniciaJuego(e:MouseEvent):void { stage.removeChild(mensajeinstr); personaje = new Personaje(stage); stage.addChild(personaje); personaje.x = stage.stageWidth /2; personaje.y = stage.stageHeight /2; personaje.addEventListener("vercontenedores",muestraElementos); } } }
y esta es la clase personaje.as
Código ActionScript :
package com.principal { import flash.display.MovieClip; import flash.display.Stage; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; public class Personaje extends MovieClip { //variable que permite cambiar al personaje private var etiqueta:String = "camina"; public var etiquetad:String = "normal"; // variable booleanas que saben las flechas pulsadas private var pulsadoIzq:Boolean = false; private var pulsadoDer:Boolean = false; private var pulsadoAbajo:Boolean = false; private var pulsadoArriba:Boolean = false; private var pulsadoTomaLata:Boolean = false; private var pulsadoLata:Boolean = false; private var influenciarPeaton:Boolean = false; //variables que se utilizan para saber el estado private var cam:Boolean = false; private var parada:Boolean = true; //variables que private var direccion:uint; // variables del escenario y otros private var stageRef:Stage; private var velocidad:Number= 3; //variables para le timer private var tiempoParaGirar :Timer = new Timer(5, 0); private var tiempoParaMover :Timer = new Timer(5, 0); public var cuentica:Number = 0; public function Personaje(stageRef:Stage):void { this.stageRef = stageRef; stageRef.addEventListener (KeyboardEvent.KEY_DOWN, pulsarTecla); stageRef.addEventListener (KeyboardEvent.KEY_UP, soltarTecla); tiempoParaGirar.addEventListener(TimerEvent.TIMER, giraPers); tiempoParaGirar.start(); tiempoParaMover.addEventListener(TimerEvent.TIMER, moverpers); } } }
Reitero la prueba que tenemos hasta el momento la pueden ver en este link: http://aulavirtual.udenar.edu.co/proyectojad/prueba/, hay pueden observar ese problema en cuanto al MouseEvent y keyboardEvent.
Espero sus consejos hacía la solución ya que todavía me falta conocer mucho de esto, soy un novato más
Atentamente,
Edwin Pacheco