Comunidad de diseño web y desarrollo en internet online

boton de musica que no funciona

Citar            
MensajeEscrito el 16 Mar 2007 04:25 pm
Hola a todos de nuevo,

estoy haciendo un clip de pelicula que contiene dos botones, un "stop" para hacer sonar la musica y un "play" para pararla con sus diferentes estados de reposo, activo y presionado, colocados cada uno en el fotograma 1 y 2 respectivamente del clip.

Los botones funcionan perfectamente pero hay un problema, cuando pulso sobre el boton stop este detiene la musica y hace que el puntero avance al segundo fotograma de la linea de tiempo para que aparezca el boton play en su lugar, la sorpresa viene cuando cambia al segundo fotograma y, aunque me aparece el boton stop, este no parece ser interpretado como un boton (paso por encima el puntero del raton y este nisiquiera cambia de forma) por lo que no puedo pulsar de nuevo para reanudar la musica y volver al fotograma 1.

He mirado el tutorial "Boton Play-Pausa para sonido en flash" y veo que su forma de proceder es la misma que la mia, ¿que falla entonces?

Os dejo el codigo aqui abajo para que le echeis un vistazo y me digais que es lo que no hago bien, gracias^^

Código :

// guardamos la ruta del archivo MP3 en una variable
// creamos el objeto de sondio
var cancion:String = "musica.mp3";
var musica:Sound = new Sound();

// hacemos el loop de la musica
musica.onSoundComplete = function() {
   musica.start(0, 1);
};

// hacemos que empieze a sonar cuando se termine de cargar
musica.onLoad = function() {
   musica.setVolume(80);
   musica.start();
};

// carga de la musica SI streaming
musica.loadSound(cancion, true);

//hacemos los estados de los botones
//boton on_mc
this.sonido_mc.on_mc.onRollOver = function() {
   this.gotoAndStop("activoOn");
};

this.sonido_mc.on_mc.onRollOut = function() {
   this.gotoAndStop("reposoOn");
};

this.sonido_mc.on_mc.onPress = function() {
   this.gotoAndStop("clickOn");
};

this.sonido_mc.on_mc.onReleaseOutside = function() {
   this.gotoAndStop("reposoOn");
};

this.sonido_mc.on_mc.onRelease = function() {
   this._parent.gotoAndStop("off");
   this.gotoAndStop("reposoOn");
   musica.stop();
};


// boton off_mc
this.sonido_mc.off_mc.onRollOver = function() {
   this.gotoAndStop("activoOff");
};

this.sonido_mc.off_mc.onRollOut = function() {
   this.gotoAndStop("reposoOff");
};

this.sonido_mc.off_mc.onPress = function() {
   this.gotoAndStop("clickOff");
};

this.sonido_mc.off_mc.onReleaseOutside = function() {
   this.gotoAndStop("reposoOff");
   musica.start();
};

this.sonido_mc.off_mc.onRelease = function() {
   this._parent.gotoAndStop("on");
   this.gotoAndStop("reposoOff");
};

Por noctam

Claber

197 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Mar 2007 12:21 am
Mmmm, mas bien no creo que sea por código, por que no verificas si el botón esta en la librería como botón, checa también si en el fotograma donde lo tienes esta tratado como botón... aunque tal vez digo esto de balde por que realmente no he visto el tutorial del que hablas. A lo mejor en dicho tutorial usan movieclips como botones. Pero para el código que tienes yo te recomendaría usar botones de flash. :P

Por El_Beto_TM

156 de clabLevel

1 tutorial

Genero:Masculino  

Mexicali, Baja California

firefox
Citar            
MensajeEscrito el 17 Mar 2007 12:51 pm
aqui abajo dejo un enlace al tutorial al que me refiero:
http://www.cristalab.com/tutoriales/146/boton-play-pausa-para-sonido-en-flash

de todas formas ya encontre una forma de hacerlo funcionar, aunque no me gusta la forma en que lo hago y me gustaria saber si hay una forma mejor de hacerlo, os comento lo que he echo.

el codigo es el mismo pero he cambiado algunas cosas en la linea de tiempo, los botones ya no estan dentro del clip "sonido_mc" si no que se encuentran dentro de "musica_mc" que es donde estaba "sonido_mc" asi que ahora la estructura es:

musica_mc
fotograma1
- on_mc
fotograma2
- off_mc

y el codigo se reparte, en el fotograma1 situo lo siguiente:

Código :

/*
   Funcion para la carga del sonido
   Situacion AS: linea de tiempo raiz, fotograma 1
*/

// guardamos la ruta del archivo MP3 en una variable
// creamos el objeto de sondio
var nombre_cancion:String = "musica.mp3";
var musica:Sound = new Sound();

// hacemos el loop de la musica
musica.onSoundComplete = function() {
   musica.start(0, 1);
};

// hacemos que empieze a sonar cuando se termine de cargar
musica.onLoad = function() {
   musica.setVolume(80);
   musica.start();
};

// carga de la musica SI streaming
musica.loadSound(nombre_cancion, true);

//hacemos los estados de los botones
//boton on_mc
this.on_mc.onRollOver = function() {
   this.gotoAndStop("activoOn");
};

this.on_mc.onRollOut = function() {
   this.gotoAndStop("reposoOn");
};

this.on_mc.onPress = function() {
   this.gotoAndStop("clickOn");
};

this.on_mc.onReleaseOutside = function() {
   this.gotoAndStop("reposoOn");
};

this.on_mc.onRelease = function() {
   this._parent.gotoAndStop(2);
   //this.gotoAndStop("reposoOn");
   musica.stop();
};


y en el fotograma2 pongo solo lo referente al boton off_mc:

Código :

// boton off_mc
this.off_mc.onRollOver = function() {
   this.gotoAndStop("activoOff");
};

this.off_mc.onRollOut = function() {
   this.gotoAndStop("reposoOff");
};

this.off_mc.onPress = function() {
   this.gotoAndStop("clickOff");
};

this.off_mc.onReleaseOutside = function() {
   this.gotoAndStop("reposoOff");
   musica.start();
};

this.off_mc.onRelease = function() {
   this._parent.gotoAndStop(1);
   this.gotoAndStop("reposoOff");
};


De esta forma si consigo que funcione, pero no me gusta tener repartido el codigo (no me resulta elegante jeje), hay alguna forma de hacerlo sin tener que repartir el codigo en dos frames y que funcione correctamente?

Por noctam

Claber

197 de clabLevel



 

firefox

 

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