Comunidad de diseño web y desarrollo en internet online

No hay forma de dirigirse a memoria y obtener los obj:Sound?

Citar            
MensajeEscrito el 13 Oct 2006 11:39 am
Buen aqui un problema que tuve hace un tiempo y estaba relacionado con una clase la cual estoy solucionando.

Lo desvinculo de la clase para verlo mas claramente

Código :

_root.createEmptyMovieClip("mc_mc", 1);
var objSound:Sound = new Sound(_root.mc_mc);
objSound.attachSound("sonido0");
objSound.start(0, 999);
_root.mc_mc.removeMovieClip();
delete objSound;


como se puede ver estoy intanciando la clase sound y pasando al constructor mc_mc
luego elimino el movieClip
y luego elimino el obj Sound

Bien ahora es imposible o por lo menos no encuntro forma de apagar el sonido
La logica seria de que si elimino la clase o el objeto a la cual hace refencia en este caso mc_mc

el sonido deberia dejar de sonar

El problema que yo tenia con esto es que me habia echo una clase de manejo de sonidos y al eliminar o perder la instancia de la clase no tenia forma de parar los sonidos que quedaban en memoria

Para encontrarle el problema lo simplifique y veo que pasa lo mismo directamente trabajando con el objSound el linea de tiempo.

Alguien sabe si hay forma de hacer que si pierdo la instancia de clase dentro de la cual puedo estar generando un objSound y si pierdo la instancia del movieCLip en el cual fue instanciada la calse, poder programar algo para que estos sonidos paren?

Bueno aca otro posible bug, la verdad por ahora no le encontre vuelta!!!

saludos
Pablo

Por cv_pablos

8 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 Oct 2006 11:50 am
La clase Sound le permite controlar el sonido de una película. Puede añadir sonidos de la biblioteca a un clip de película mientras se reproduce la película, así como controlar dichos sonidos. Si no especifica un destino cuando al crear un nuevo objeto Sound, podrá utilizar los métodos para controlar el sonido de toda la película.


La clase Sound no crea un sonido en sí, sólo lo controla. Por lo que si borras la insancioa de Sound, pierdes la posiblidad de referirte al sonido por código, no el sonido en sí.
La única manera es Sound.stop() U_U

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 13 Oct 2006 01:43 pm
Ok, justamente aqui el problema

Todos los sinidos los controlo por medio de una clase, los objetos del sonido son privados a la clase, al perder la instancia del la clase, (por lo que fuere, por ejemplo que se descargo la pelicula) tambien se pierde el objSOund

La solucion que se me ocurre es generar los objSound dentro de la clase como static.

Perderia la flexibilidad de poder tener diferencias instancias de mi clase y el mismo obj.
Ahora otro problema, los sonidos se vinculan a el mc por medio de attachSound


Teoricamente no podria hacer un attachSound a un mc que esta en mi root si no es la misma pelicula

Por lo cual el mc lo tengo que crear en el mismo lugar donde fue instanciada la clase para evitar este problema

Ahora bien supongamos que el usuario por una cuestion de navegacion descarga la pelicula o se mueve en la linea de tiempo.

Se perderian todas las referencias a los mc con los que se relaciona al objSound

La unica solucion que encuentro es tener que tirar todos los sonidos de todas las peliculas que se usen en el level0 o en algun fla y instanciar a las clases unicamente dentro de esa pelicula, lo que podria sobrecargar de peso inecesario a todas las peliculas ya que el sonido se usa unicamente en algunas de ellas

Bueno espero ser claro

Saludos

Por cv_pablos

8 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 Oct 2006 01:58 pm
:?
No entendí nada, ¿puedes poner algo de código?
De todas formas NO es tan complicado como eso. Si haces un attachSound, cargas los sonidos desde la blilioteca del swf donde los llamas...

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 13 Oct 2006 03:34 pm
crea las instancias así:

Código :

new Sound(this);


Otra, suplanta los métodos para borrar.

Por ejemplo crea tu método así:

Código :

function removeMovieClip():Void{
  objSound.stop();
  super.removeMovieClip();
}

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox

 

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