Foros del Web » Creando para Internet » Flash y Actionscript »

estado "presionado" mientras...

Estas en el tema de estado "presionado" mientras... en el foro de Flash y Actionscript en Foros del Web. Hola gente, voy al grano: Tengo una peli en la que suenan 4 temas mp3 a elección. Para seleccionarlos tengo 4 botones, uno para cada ...
  #1 (permalink)  
Antiguo 10/08/2005, 14:54
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
estado "presionado" mientras...

Hola gente, voy al grano:

Tengo una peli en la que suenan 4 temas mp3 a elección.

Para seleccionarlos tengo 4 botones, uno para cada tema.

Lo que quiero es que mientras el tema uno.mp3 este sonando, el botón del "tema 1" quede de un color, y si hago sonar el tema dos.mp3 se desactive el botón "tema 1" para que se active el botón "tema 2". Me explico?

Como hago para decirle al botón que si suena "dos.mp3" haga una cosa, y si suena "otro.mp3" haga otra cosa??? En conclusión, como vinculo una acción a un "evento de sonido" por llamarlo de algún modo.

Muchas gracias. Fede
  #2 (permalink)  
Antiguo 10/08/2005, 15:48
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 9 meses
Puntos: 53
no se como estara programado tu reproductor, pero imagino que debe haber una variable que contenga el titulo de la cancion a reproducir....

entonces una vez sepas que variable es la que contiene dicha informacion, lo que haces serian solo comparar sa vaiable y poner el boton en otro color si se cumple dicha condicion, me explico??

have funn
  #3 (permalink)  
Antiguo 10/08/2005, 19:51
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
Por lo que te leo... podrias ponerle en el boton 2 que al momento que sea presionado el boton 1 se desactive... es decir: on(press){
instanciaboton1.enabled = "false";
}
Y asi cuando opriman el boton 2 el boton 1 se desactivara... espero y sea una solucion...
  #4 (permalink)  
Antiguo 11/08/2005, 10:04
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
Hola Stock, la verdad es que soy muy básico en AS, y aún no controlo del todo el tema de variables, lo pensé pero no logre llevarlo a cabo con éxito.

NopasStudio, eso que decís es lo que hice, pero hay un problema, la película que tiene los botones es "parte" de una película más grande, es decir, entre el fotograma 1 y 10 tengo una sección, entre el 11 y el 20 la sección con los botones, y entre el 21 y el 30 una tercera sección.
Todo funciona hasta que salgo de la sección de botones, y cuándo vuelvo a ingresar, todo está como al principio, ningún botón marcado, aunque la cancion siga tocando. Me explico?

Un abrazo
  #5 (permalink)  
Antiguo 11/08/2005, 10:21
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
Si te explicas... lo que yo te recomiendo es que... pongas en el frame 1 toda tu pelicula, aunque lo dividas en capas, es decir en el frame 1 vas a tener tus botones en la capa "botones", y en el frame 2 tendras la cancion 1 y en el frame 3 la cancion 2 y en el frame 4 la cancion 3. ok. ahora cuando tu estes en el frame 1 y des clic a la cancion 1, que este se vaya al frame 2 (gotoAndPlay(2);) y ahi la reproduces, y asi consecutivamente....
  #6 (permalink)  
Antiguo 11/08/2005, 10:30
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
Gracias por la sugerencia, pero no es así como funciona...

Esta película es una sección de mi web, está dividida en 3 porque tiene, en la primera parte la sección de "login para clientes", en la segunda "todos los controles de audio" (que en realidad funcionan en otro swf, pero los controlo desde acá); y en la tercera sección el staff y otras cosillas.

Como haría para almacenar en variables y luego llamar a esos métodos?
Un abrazo
  #7 (permalink)  
Antiguo 11/08/2005, 10:58
Avatar de JDGomezB  
Fecha de Ingreso: agosto-2005
Ubicación: Bogotá, Colombia
Mensajes: 41
Antigüedad: 18 años, 8 meses
Puntos: 0
RUSOFTWARE te tengo la solucion que necesitas:

Si mal no estoy quieres que el estado de los botones se mantenga durante toda la pelicula sin importar si te devuelves o avanzas...
Mi solución entonces es crear una variable en la que vas a guardar el numero del boton que debe ir desactivado, entonces tienes que poner los botones con nombres de instancia así:

botCancion1
botCancion2
botCancion3
botCancion...
botCancionN

con esto lo que haces que cuando el boton sea activado le das el valor a la variable:
Código:
//Aqui hacemos que cada vez que se presione un boton se activen todos y se desactive el actual, ademas de guardar la variable para despues
on(release){
     poner a sonar tema 1
    _root.MiVariable=1;
    for(i=1;i<N;i++){
        _root["botCancion"+i].enabled = true;
    }
    this.enabled=false;
}
Luego en el frame de la pelicula donde necesitas que los botones tengan el estado que se activó en otro lado pones la siguiente condicional:

Código:
//Aqui verificas que se le ha dado algun valor a la variable "MiVariable", si no se le ha dado un valor entonces no se hará nada, asi que no te preocupes

if (_root.MiVariable){
	_root["botCancion"+MiVariable].enabled = false;
}
Espero que esto te ayude a controlar lo que quieres hacer con los botones. Si luego quieres que al sonar la musica se ejecute alguna otr accion lo que debes hacer es crear un objeto de tipo Sound() y alli puedes controlar cuando quieres que empiece, cuando termine, en que posicion va y otras cosas...

Saludos
__________________
JUAN DAVID GOMEZ B
ShockerMOD - USERSHOCK.COM
[email protected]
-------------------------------
Macromedia Usergroup Colombia
macromedia.com/usergroups
  #8 (permalink)  
Antiguo 11/08/2005, 12:17
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 3
ruso si no me equivoco lo que necesitas es que el boton del tema que seleccionaste quede como elegido y no se pueda volver a clickear hasta que eligas otro tema.
yo lo que hago para esos casao ( y mas si son 4 botones) es ponerle un nombre a cada boton y luego en el fotograma que corresponda darles las acciones a cada boton:
supongamos que los botones se llaman btema1,btema2,btema3,btema4 y el mc que los contiene mibotonera
ejemplo:
Código HTML:
_root.mibitonera.btema1.onRelease = function () {
     // las acciones que necesites
    // aca le digo el estado a cada boton
    _root.mibitonera.btema1.enabled = false;// es este mismo boton
    _root.mibitonera.btema2.enabled = true;
    _root.mibitonera.btema3.enabled = true;
    _root.mibitonera.btema4.enabled = true;
};
haciendo esto hago que al hacer click en el boton este quede en el estado over y desactivado. ( al estar over queda "como seleccionado").
Repetis esta accion para cada boton y listo.
No probe lo que te mando JDGomezB pero aparentemente es lo mismo sin tanta repeticion como la que te paso yo, o sea mejor. =) ;)
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
  #9 (permalink)  
Antiguo 11/08/2005, 13:13
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
jdGomez, eso es lo que preciso, lo pruebo y aviso como me fue.

Gracias radarcba, pero no es precisamente lo que necesitaba, sino activar el estado y que queden así aún saliendo y entrando de nuevo en esa sección de la película.

Un abrazo
  #10 (permalink)  
Antiguo 12/08/2005, 10:36
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
Problemas y soluciones...

1. JDGomezB, Genio, gracias por el código!

2. Bueno, a la hora de utilizarlo encontré algunos problemas que logre resolver, así que paso a contarles para los que les interese.

a. el primer problema fue que el "this.enabled=false" no funcionaba, simplemente lo solucione poniendo "botCancionx.enabled=false"... No se porque el this no funciona...

b. luego me paso que andaba bien, pero cuándo salia de esa sección y volvía el botón desactivado era siempre el 1... Esto hasta que me di cuenta que hay que acomodar el valor de la variable en "cada" boton, así para el botón 1 es 1, para el 2 es 2 y sucesivamente (disculpen la burrada, pero como dije anteriormente, las variables no las manejo aún :))

c. El tercer problema fue que me quedaban desactivados "varios botones" y no se volvian a activar cuándo apretaba otro. También error mío, cuándo me di cuenta que debía reemplazar la N por el número máximo de botones que tengo, así, donde dice "<N" le puse "<=4" ya que son cuatro botones.


3. Gracias a todos amigos, estoy aprendiendo mucho y se lo debo a ustedes...

En realidad necesitaba esto de las variables para pasársela a unos textos dinámicos que "nominan" los botones, así el que está sonando es rojo y los otros negros... Bueno, he adaptado el código y posteo a continuación toda la resolución, seguro a alguien más le sirve.

Un abrazo grande. Fede
  #11 (permalink)  
Antiguo 12/08/2005, 10:38
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años
Puntos: 2
Siempre creí que hay que ser agradecido, y bueno, considero que una manera de demostrarlo es no guardarme la solución para mi solo, sino compartiendola con otros. Esto es lo que pretende ser este post, al menos para agradecer a quienes me ayudaron.

Como dije, tengo en la película tres secciones más una del preloader, todo en la misma timeline.

Describo:
1. Timeline:
- Fotogramas 1-2: espacio para el preloader
- Fotogramas 3-9: sección "login para clientes"
- Fotogramas 10-19: "Controles de Audio"
- Fotograma 20: "Staff" (en realidad va otra cosa, ya se me ocurrirá...)

2. Control de Audio:
- Botones:
botCancion1
botCancion2
botCancion3
botCancion4

- Textos Dinámicos:
tema1
tema2
tema3
tema4

3. Acciones para que todo funcione:

- En fotograma 10:
Cita:
if (_root.MiVariable){
_root["botCancion"+MiVariable].enabled = false;
_root["tema"+MiVariable].textColor=0xC80000;
}
- En botCancion1:
Cita:
on(release){
_level1.music.contiene.sonido1.loadSound("fede.mp3 ", false);
_level1.music.contiene.sonido1.stop();
_level1.music.contiene.sonido1.start(0, 999);
_root.MiVariable=1;
for(i=1;i<=4;i++){
_root["botCancion"+i].enabled = true;
_root["tema"+i].textColor=0x333333;
}
botCancion1.enabled=false;
tema1.textColor=0xC80000;
}
- En botCancion2:
Cita:
on(release){
_level1.music.contiene.sonido1.loadSound("fede1.mp 3", false);
_level1.music.contiene.sonido1.stop();
_level1.music.contiene.sonido1.start(0, 999);
_root.MiVariable=2;
for(i=1;i<=4;i++){
_root["botCancion"+i].enabled = true;
_root["tema"+i].textColor=0x333333;
}
botCancion2.enabled=false;
tema2.textColor=0xC80000;
}
- En botCancion3:
Cita:
on(release){
_level1.music.contiene.sonido1.loadSound("fede1.mp 3", false);
_level1.music.contiene.sonido1.stop();
_level1.music.contiene.sonido1.start(0, 999);
_root.MiVariable=3;
for(i=1;i<=4;i++){
_root["botCancion"+i].enabled = true;
_root["tema"+i].textColor=0x333333;
}
botCancion2.enabled=false;
tema2.textColor=0xC80000;
}
- En botCancion4:
Cita:
on(release){
_level1.music.contiene.sonido1.loadSound("fede3.mp 3", false);
_level1.music.contiene.sonido1.stop();
_level1.music.contiene.sonido1.start(0, 999);
_root.MiVariable=4;
for(i=1;i<=4;i++){
_root["botCancion"+i].enabled = true;
_root["tema"+i].textColor=0x333333;
}
botCancion4.enabled=false;
tema4.textColor=0xC80000;
}
Espero les sirva, a mi me sirvio mucho. Dejo el .fla por si lo quieren.

Y para no irme si dejarla picando... Porque diablos no me funcionó con "this.enabled"???

Gracias nuevamente. Adiós
  #12 (permalink)  
Antiguo 12/08/2005, 10:51
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 3

Gracias. Seguramente algun dia necesitare algo como esto y ya tengo un ejemplo para estudiarlo y apender...
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:00.