Comunidad de diseño web y desarrollo en internet online

Reiniciar un juego y eliminar todos los elementos

Citar            
MensajeEscrito el 29 Oct 2010 06:14 pm
Buenas,

Estoy probando a hacer un mini juego de tablero, y tengo un problema (que es un problema que arrastro de otras pruebas).

En dicho juego crea un array para una secuencia de sonidos, crea de forma dinámica varios textfields (para puntuación e información, etc...), y tengo un detector para saber si ha finalizado el juego. Cuando detecta que ha finalizado salta a otro fotograma etiquetado desde donde puedo ir de nuevo al primer fotograma del juego (para jugar otra vez). El caso es que en esta ocasión tengo todo el código en el primer fotograma, y al reiniciar se me duplican los textos en pantalla y se vuelve un poco loco.

He hecho una prueba de enviar a otra escena nueva y volver al juego (pensando en que se liberaría de la memoria el código) y he comprobado que no es así.

Mi duda es ¿cómo gestiona Flash los elementos en memoria? ¿No se eliminan al cambiar de escena? ¿Hay algún método para "limpiar la memoria"?

Un saludo ;-)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari
Citar            
MensajeEscrito el 29 Oct 2010 06:38 pm
Nop, lo que deberías hacer es un método init que resetee todas las variables que se utilizan en el juego

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2010 06:42 pm
BuenAS:

No es tanto problema de que Flash Player libere memoria, sino de que al volver al fotograma 1 se vuelve a ejecutar el código que crea tu juego, y por tanto los duplica. Vuelve al fotograma 2, por ejemplo, y NO VUELVAS MÁS al fotograma 1. También sería interesante que te crearas una función que resetee el juego: ponga la puntuación a cero, limpie el tablero, muestre un mensaje de "Start new game"...

Ya sé que no me creerás, pero se puede hacer un juego en Flash sin escribir ni una sola línea de código en el timeline ;) Es muchísimo más fácil, y da bastantes menos problemas.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Oct 2010 06:56 pm
Gracias Jorge ;-)

Lukánicos, sí te creo... he hecho alguna cosa (pero siguiendo tutoriales en los que casi que he copiado más que aprender) con ficheros AS... El problema es que he empezado a probar una cosa dentro del mismo archivo (y linea de tiempos), he seguido y al ver lo que pasaba me ha saltado la duda, así que he probado esos métodos in-extremis para entender cómo funcionaba Flash en la gestión de dichos elementos.

He probado a poner una función de reseteo, pero me lo seguía haciendo. Voy a probar el método del segundo fotograma.

No obstante, lo que me intrigaba es que no hubiera una manera de "limpiar todo". Imagina que tienes una colección de utilidades o juegos, todos diferentes, y quieres llamarlos desde el menú; si tienes que tener encuenta ir reseteando variables y demás, cuando no las vas a utilizar de una escena a otra, pues me parecía "raro".

Muchas gracias de nuevo por vuestro tiempo (y la rapidez, que me ha asombrado recibir la notificación justo tras poner el post).

;-)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari
Citar            
MensajeEscrito el 29 Oct 2010 06:59 pm
Escenas y fotogramas son abstracciones a nivel de IDE, pero en la programación no tienen ningún sentido. Si avanzas haciendo juegos, verás que lo que comenta Lukánicos no es una opción, sino casi la única forma de hacer algo rápido y eficiente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2010 07:04 pm

solisarg escribió:

Escenas y fotogramas son abstracciones a nivel de IDE


Pues ahí queda todo dicho entonces. Mil gracias ;-)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari
Citar            
MensajeEscrito el 29 Oct 2010 07:08 pm
BuenAS:

Si has seguido algún tutorial que programe con clases sabrás que las clases tiene una función (un método) que se llama igual que la clase y que se EJECUTA SOLO UNA VEZ, cuando instancias la clase, llamado "constructor" (muy adecuado el nombre, tanto en inglés como en español :) ). Cuando programas en la línea de tiempo (¡a qué retorcido desarrollador de Macromedia se le ocurriría esto!) puedes simular esto escribiendo el código que sólo se va a ejecutar una sola vez (lo que sería el constructor de una clase) en el fotograma 1, y NO VOLVIENDO a pasar por él, haciendo los gotoAndPlay al fotograma 2.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Oct 2010 07:22 pm
Funcionó (pasando por el fotograma 2) !!!!!

Gracias de nuevo, no porque haya podido solucionarlo con las respuestas, sino por lo aprendido de ellas que me parece más esclarecedor

;-)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

safari

 

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