Comunidad de diseño web y desarrollo en internet online

Sound que no deja de sonar

Citar            
MensajeEscrito el 30 Jul 2008 08:04 am
Hola a todos, tengo la siguiente pregunta

Tengo un movieClip que importa una clase en la cual se crea una instancia de sonido.

Cuando hago un unloadMovie o removeMovieClip de este movieClip el audio parece "que pasa a otro nivel", porque sigue sonando y se pone el volumen al máximo.

He solucionado esto añadiendo lo siguiente en la clase donde se carga el sonido
---------------
this.onUnload = destructor;
y destructor es una función hace un delete de la clase.
-----------------
Si hago esto el sonido deja de reproducirse.

Simplemente me gustaría que me comentasen si alguien ha tenido este problema, razones de por qué ocurre esto y si hay alguna manera mejor de solucionarlo.

NOTA:: Otra cosa interesante es que antes de que importase esta clase y crease una instancia, tenía el código directamente en el movieClip(sin clases ni nada) y al hacer el unloadMovie todo se "descargaba", incluido el sonido

Gracias amigos

Por aitorlape

23 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jul 2008 09:47 am
Puede que unload no lo pare, de hecho si usaras AS3, no solamente el sonido, sino todos tus callbacks (por ejemplo un onEnterFrame) seguirían funcionando, ya que la lógica interna de una clase no se detiene por estar o no en el DisplayList.


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2008 10:31 am
Gracias por la respuesta. ¿Entonces qué debería hacer?

Me interesa saber como una vez creas una instancia de una clase (o en mi caso utilizo una clase estática, que a su vez puede crear otras instancias, etc) puedo destruir todo lo que realice para que nada de lo que había creado permanezca por ahí ejecutándose.
Además esta clase es estática porque no quiero crear instancias pero en principio lo único que veo que continúa es el audio (los onEnterFrames sí deja de ejecutarlos)

Si no, lo único que se me ocurre es dejar de utilizar la clase , si no recuerdo mal antes, cuando hacia el unloadMovie si dejaba de ejecutarse el sonido. El problema ha sido cuando he hecho una clase de mi código.

Por aitorlape

23 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jul 2008 10:44 am
Es una buena práctica siempre poner un destructor en la clase para liberar recursos. Para el sonido en el destructor (Sound.stop())

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2008 11:00 am
Muchas gracias. Sí, es lo que comentaba en mi primer post, tengo un destructor en el que pongo el delete de la clase y de esta forma funciona.

Mi preguntaba más bien venía en por qué era el sonido el que no desaparecía al hacer el unloadMovie o removeMovieClip.
El resto de funciones de la clase, callbacks, etc y el movieclip en sí se "descargan", pero si no utilizo el constructor, el sonido permanece. Era por si me podían aclarar a qué era debido (como se gestiona la memoria al crear la clase o lo que sea).
Y aclaraba que todo el problema vino al utlizar la clase, porque cuando creaba toda la funcionalida sin clases (con un #include del as) al hacer el unload todo desaparecía, incluso el audio.

Seguiré "jugando" y si llego a alguna conclusión lo comento. Muchas gracias.

Por aitorlape

23 de clabLevel



Genero:Masculino  

firefox

 

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