Buenas. Soy nuevo, y siguiendo los sabios consejos de los antimmorpg, he empezado aprendiendo flash.
Estoy haciendo un programita super simple que quiero que tire cuadraditos al presionar espacio de un rectangulo que se mueve con las flechas.
Pero... los cuadraditos no aparecen. SI le quito el tema de moverse, si aparecen.
El codigo fuente es el siguiente:
var leftArrow:Boolean = false;
var rightArrow:Boolean = false;
var upArrow:Boolean = false;
var downArrow:Boolean = false;
var spaceArrow:Boolean = false;
var cazulinstance:cazul = new cazul();
cazulinstance.x = 300;
cazulinstance.y= 300;
addChild (cazulinstance);
// set event listeners
stage.addEventListener (KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener (KeyboardEvent.KEY_UP, keyPressedUp);
stage.addEventListener (Event.ENTER_FRAME, moveMascot);
// set arrow variables to true
function keyPressedDown(event:KeyboardEvent) {
if (event.keyCode == 37){
leftArrow = true;
} else if (event.keyCode == 39){
rightArrow = true;
} else if (event.keyCode == 38){
upArrow = true;
} else if (event.keyCode ==40){
downArrow = true;
} else if (event.keyCode ==32){
spaceArrow = true;
}
}
// set arrow variables to false
function keyPressedUp(event:KeyboardEvent) {
if (event.keyCode == 37){
leftArrow = false;
} else if (event.keyCode == 39){
rightArrow = false;
} else if (event.keyCode == 38){
upArrow = false;
} else if (event.keyCode ==40){
downArrow = false;
} else if (event.keyCode ==32){
spaceArrow = false;
}
}
function disparo (){
var disparo:cazul = new cazul;
disparo.x = cazulinstance.x;
disparo.y = cazulinstance.y;
disparo.scaleY=.5;
addChild(disparo);
}
// move every frame
function moveMascot (event:Event) {
var speed: Number = 5;
if (leftArrow) {
cazulinstance.x -= speed;
}
if (rightArrow) {
cazulinstance.x += speed;
}
if (upArrow) {
cazulinstance.y -= speed;
}
if (downArrow) {
cazulinstance.y += speed;
}
if (spaceArrow) {
disparo();
}
}
Alguna explicacion o solucion?
Hola Trutihe, no he puesto tu código en el compilador, pero a simple vista te diria algunas cosillas (no se si serán la solución).
-Yo acustumbro a: primero añadir el objeto con addChild y luego posicionarlo (y darle otras propiedades, como la escala), una vez que ya está en escena.
-Tienes la función disparo() y dentro una variable llamada disparo, no hagas eso. Puedes ponerle por ejemplo: function fdisparo() y por otro lado var vdisparo = xxx, por decir algo.
-Creo tambien que la forma en la que instancias var disparo:cazul = new cazul; no es correcta, ponle los parentesis al final de esta forma: var disparo:cazul = new cazul();
Espero haberte servido de alguna ayuda.
Suerte :o
La verdad es que no veo ningún problema salvo quizá en lo referente a lo q ya te han dicho. El código es completamente válido y hace lo que tiene que hacer y lo hace tan bien como cabría esperarse.
Te recomiendo que busques buenos tutoriales sobre flash que los hay de todos los colores y muchos de ellos cubren el mismo tipo de juego que buscas.
Muchas gracias por vuestros consejos, pero sigue haciendo lo mismo :D
En fin, seguiré buscando, haciendo pruebas y tal. Si alguien lo encuentra que me avise.
gracias!
SOLVED!
He usado un event.enter_frame para hacer que la bala se mueva.