Comunidad de diseño web y desarrollo en internet online

mis dudillas de novato...

Citar            
MensajeEscrito el 27 Ago 2010 07:05 pm
bueno, estoy haciendo un juego en flash con el cs4 y tengo las siguientes dudas/problemas:

---en mi juego utilizo muchos los simbolos y variables. el problema es que si creo una variable dentro de un simbolo, no puedo usarla fuera; y si la creo fuera, no puedo usarla dentro. ¿existe algún codigo para que las variables se puedan usar dentro y fuera de los simbolos?

---otro poblema es que mi juego es de disparos, pero en ciertos lugares puedes saltar y agacharte. el problema es que al llegar a esos lugares, a veces no funciona, pero al hacer click en la pantalla si que funciona.
me explico: si no hago click ni una vez, al llegar a esa parte puedo saltar y agacharme; pero si he hecho algún click previamente, tengo que hacer click en cualquier parte del juego para poder saltar o acacharme. lo extraño es que el programa no me indica ningún error. este es el codigo:

stage.addEventListener(KeyboardEvent.KEY_UP, saltar);

function saltar(e:KeyboardEvent):void
{if (e.keyCode == Keyboard.UP)
{gotoAndPlay(21);}

else if (e.keyCode == Keyboard.DOWN)
{gotoAndPlay(61);}}


gracias por adelantado.

Por el_arcano

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ago 2010 07:53 pm
BuenAS:

El segundo problema es debido a que el swf no tienen el foco del navegador (de los contenidos de la página web, no es el activo, y por tanto no recibe entradas del teclado). Imagino que al juego le pondrás un botón "Start", o "Jugar". Cuando el usuario pulse el botón para empezar a jugar el swf recibirá el foco y podrás capturar las entradas de teclado sin problema.

Para el primer caso hay múltiples soluciones, según la forma de programar en la que te sientas más cómodo:

1. Te puedes crear una clase, por ejemplo, MiSprite, que extienda de Sprite (o MovieClip) y añadirle la propiedad pública que te interese.Cuando exportes para AS el símbolo, cambia la clase base flash.display.MovieClip por MiSprite; así, tu símbolo tendrá esta propiedad pública que podrás configurarla al instanciarlo.

2. Por composición, te puedes crear una clase MiSprite, y en el constructor instancias el símbolo, añades también la propiedad pública y operas como en el pto. 1.

3. Si no te gustan las clases, puedes recurrir a un Dictionary. Es similar a un array, salvo que se accede a lo que contiene no con un índice, sino con objetos. Por ejemplo, quieres guardar en el objeto naveEspacial el número de disparos que recibe, te creas el dictionary "impactos", y haces:

impactos[naveEspacial] = 15;

Puedes guardar tanto valores como funciones.

4. y muchos más...

Por cierto, el pto. 3 es el menos aconsejable desde mi pto. de vista, pero que tiene bastantes "adeptos" por su facilidad :)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Ago 2010 10:09 pm
he encontrado este codigo:

package {
public class MyAppModel
{
public static var color : Number = 0xff0000
}
}

pero si lo uso me pone "1037: los paquetes no se pueden anidar",
¿que hago mal?

Por el_arcano

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ago 2010 05:22 am
BuenAS:

Esa clase tiene una propiedad estática, para utilizarla basta con hacer

Código ActionScript :

var obtenerColor:uint = MyAppModel.color;

y obtenerColor valdría 0xFF0000

Para las clases hay que tener en cuenta varias cuestiones:

1. La clase se tiene que llamar EXACTAMENTE igual que el nombre del archivo .as. Así, ese código debería estar en un archivo llamado MyAppModel.as

2. Si colocas la clase dentro de un paquete (por ejemplo, en el caso de ser package com.utilidades), en tu carpeta de proyecto deberías guardar la clase MyAppModel.as en la subcarpeta "com/utilidades". O sea, la jerarquía del paquete tiene que coincidir EXACTAMENTE con la estructura de subcarpetas donde se guarda el .as

En el primer pto. me refería a una clase de este tipo:

Código ActionScript :

package
{
   import flash.display.Sprite;
   
   public class MiSprite extends Sprite
   {
      public var posInicialX:Number;
      public var posInicialY:Number;
      
      public function MiSprite()
      {
         super();
      }
   }
}


Si tienes un símbolo en la biblioteca y al exportarlo para AS haces que extienda de MiSprite (esta clase debería estar en la carpeta raíz de tu proyecto) en lugar de flash.display.MovieClip, ahora la nueva instancia tendría las propiedades posInicialX y posInicialY (las que tú quisieras añadir a esta clase, claro, no estas :) )

Aclarar que si tu símbolo es un MovieClip (tiene línea de tiempo), basta con cambiar en la clase anterior Sprite por MovieClip.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Ago 2010 05:30 am
BuenAS:

Otra opción, crear una clase con el mismo nombre que el símbolo de la biblioteca, que extienda de Sprite (o MovieClip, según el caso). Las propiedades publicas que añadas a esta clase también podrás utilizarlas como venimos hablando. Esto tiene el inconveniente (o ventaja, según el caso) de crear una clase distinta para cada símbolo.

Por cierto, estamos refiriéndonos sólo a propiedades, pero igualmente sería todo esto aplicable a funciones/métodos públicos.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.