Foros - Stratos

Stratos => Flash/Flex => Mensaje iniciado por: Trutihe en 11 de Diciembre de 2009, 07:50:47 PM

Título: Help: Duda de porque no va esto
Publicado por: Trutihe en 11 de Diciembre de 2009, 07:50:47 PM
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?
Título: Re: Help: Duda de porque no va esto
Publicado por: yung en 15 de Diciembre de 2009, 11:03:53 AM
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
Título: Re: Help: Duda de porque no va esto
Publicado por: Elthan en 16 de Diciembre de 2009, 10:13:10 AM
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.
Título: Re: Help: Duda de porque no va esto
Publicado por: Trutihe en 17 de Diciembre de 2009, 11:50:09 AM
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!
Título: Re: Help: Duda de porque no va esto
Publicado por: Trutihe en 20 de Enero de 2010, 12:01:01 PM
SOLVED!

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