Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Help: Duda de porque no va esto

Iniciado por Trutihe, 11 de Diciembre de 2009, 07:50:47 PM

« anterior - próximo »

Trutihe

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?

yung

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

Elthan

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.
Portal de juegos flash: http://www.torredejuegos.com

Trutihe

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!

Trutihe

SOLVED!

He usado un event.enter_frame para hacer que la bala se mueva.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.