Comunidad de diseño web y desarrollo en internet online

Problema con botones en estado "Release"

Citar            
MensajeEscrito el 06 Jun 2007 03:49 pm
Hola chic@s, vengo con un problema que quizás no sea muy complicado pero no me esta saliendo hacerlo, le comento..

Tengo 5 botones con su código que hace el efecto de "rollOver" y "rollOut" en cada botón.

Código :

on (rollOver) {
   this.gotoAndPlay(2);
}
on (rollOut) {
   this.gotoAndPlay("out");
}


Ahora, el efecto que realiza es: Que en "rollOver" un texto asciende y pasa de color negro a blanco, y en "rollOut" hace lo contrario, el texto baja y se vuelve a negro de nuevo.

El problema es que yo quiero que cuando haga click ("onRelease"), el botón al cual le hice click, pase al estado final de "rollOver", osea: El texto arriba y en blanco.

Pero es no es todo, sino que al entrar a la película el primer botón ya debe estar así, y luego, al hacer click en otro este primero vuelve al estado normal y el botón recién seleccionado pasa al estado de texto arriba y en blanco.

Les dejo el .fla para que puedan entenderlo mejor: www.cromosoma47.com/cromosoma47_problema.rar

Muchas gracias a todos desde ya!!
Cristian Arce.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 10 Jun 2007 05:55 am
Colocale nombre de instancia a los botones "Btn" (a todos el mismo nombre), y quitale el codigo a todos los botones,
luego colocas el siguiente codigo en el primer fotograma de tu linea de tiempo principal:

Código :

SobreBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay(2);
}
SaleDelBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay("out");
}
PresionadoBtn = function () {
   _root.BtnPresionado.gotoAndPlay("out"); 
   _root.BtnPresionado.swPresionado = false;
   this.gotoAndStop(13);
   this.swPresionado = true;
   _root.BtnPresionado = this;
}
for (i=1; i <= 5; i++) {
   objBtn = _root["panel" + i].Btn;
   objBtn.onPress = PresionadoBtn;
   objBtn.onRollOver = SobreBtn;
   objBtn.onRollOut = SaleDelBtn;
}
BtnPresionado = null;
panel5.Btn.onPress(); // supongo que es el 5 el que quieres activo

Ya lo probe y si funciona.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 10 Jun 2007 03:36 pm
Wooooww si funciona!! Muchísimas gracias gabynufe, ya pensaba que nadie me respondería jeje

Solo quería preguntarte ahora, si no hay un código similar pero que pueda aplicar a todos mis trabajos?
Me refiero, a que no sea con el sistema de " objBtn = _root["panel" + i].Btn;" para poder usarlo en un
menu de productos por ejemplo en el que todos tiene nombre diferentes, y asignarles a cada uno una
acción diferente al hacer click, aparte de que haga el efecto que hiciste de que se detenga en rollOver.

Espero que me haya podido explicar y no te complique demasiado, igualmente gracias por esta ayuda!!

Saludos,
Cristian Arce.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 10 Jun 2007 07:32 pm
Las distintas acciones las almacenás en un Array y a cada producto (mc) le asignás un número distinto, que va a ser el índice del elemento del Array con el que están relacionados.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2007 12:19 am
Gracias Hernán por responder, pero recientemente me estoy iniciando en código mas avanzado de Flash
y la verdad es que no entendí muy bien lo que quisiste decir. Podrías aclarármelo un poco?

Mil gracias!
Cristian.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2007 02:19 am
Un Array almacena datos asignándoles un índice numérico:

Código :

var miArray:Array = new Array ("primer elemento", "segundo elemento", "tercer elemento", "etc");
Entonces, si queremos acceder al primer elemento del Array simplemente usamos este código:

Código :

miArray[0]
Siendo lo que se encuentra entre los corchetes el índice o posición del elemento que queremos acceder.

Un detalle sumamente importante es recordar que el Array comienza con el elemento 0 y no con el 1. Esto es sumamente importante al hacer un for para recorrerlo:

Código :

trace ("Elementos dentro del Array:");
for (var i = 0; i < miArray.length; i++) {
trace ("miArray[" + i + "] = " miArray[i]
}
Y así obtenemos todos los elementos.

Ahora, lo que yo había dicho es que cada MC tenga un número asignado y que ese número sea el índice del Array para lo que quieras que haga. Por ejemplo, tenemos 2 MCs, llamados "mc1" y "mc2".

Éste código emplea la variable "indice" que les asignamos para pasar un dato como parámetro a una función:

Código :

mc1.indice = 1;
mc2.indice = 2;
//
mostrar = function (dato:String, mc:MovieClip) {
trace ("Para el MovieClip " + mc + ", el valor del Array es: " + dato);
};
//
mostrar (miArray[mc1.indice], this);
mostrar (miArray[mc2.indice], this);

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2007 10:28 pm

Código :

// arreglo de botones del menu, se colocan los nombres de instancias de cada botón, 
// ruta completa desde root (sin comillas)(sin _root)
arrBtns = [Casa.NtnX, Ventana.BtnA, Perro]; // ETC...
SobreBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay(2);
}
SaleDelBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay("out");
}
PresionadoBtn = function (objBtn) {
   _root.BtnPresionado.gotoAndPlay("out"); 
   _root.BtnPresionado.swPresionado = false;
   objBtn.gotoAndStop(13);
   objBtn.swPresionado = true;
   _root.BtnPresionado = objBtn;
}
Casa.onPress = function () {
   PresionadoBtn(this);
   // aqui abajo colocas el codigo que se ejecuta para el boton Casa
}

Ventana.onPress = function () {
   PresionadoBtn(this);
   // aqui abajo colocas el codigo que se ejecuta para el boton Ventana
}
Perro.onPress = function () {
   PresionadoBtn(this);
   // aqui abajo colocas el codigo que se ejecuta para el boton Perro
}
for (i=0; i < arrBtns.length; i++) {
   objBtn = _root[arrBtns[i]];
   objBtn.onRollOver = SobreBtn;
   objBtn.onRollOut = SaleDelBtn;
}
BtnPresionado = null;
PresionadoBtn(_root[arrBtns[0]]); // suponiendo que es el primer boton del arreglo el que quieres activo

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 12 Jun 2007 02:44 pm
Gaby, gracias por tu interés y tu ayuda... Ahora, estoy teniendo un problema, no me funciona jeje

Lo que hice fue poner ese código y el nombre de instancia "Casa", "Ventana",etc a los botones,
pero aun así no funciona, que puede estar pasando?

Gracias desde ya!!
Cristian.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 12 Jun 2007 05:05 pm
1) revisa que el codigo este en la linea de tiempo principal, en el fotograma donde estan los botones.
2) revisa que la ruta de los botones este completa en el arreglo
o mejor sube el fla a tu sitio y pones la liga para bajarlo.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 21 Jun 2007 05:06 pm
Revise el código pero me sigue sin funcionar... Sería mucho pedir que con el mismo fla que subi
a la web apliques ese código? En vez de Panel1, Panel2, etc que sean nombre separados.

Mil gracias desde ya (Y)
Cristian.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 22 Jun 2007 02:45 am

cromosoma47 escribió:

Revise el código pero me sigue sin funcionar... Sería mucho pedir que con el mismo fla que subi
a la web apliques ese código?
En general sí, sería mucho. Pero depende del usuario al que se lo pidas. Sin importar si lo hace o no, aclaro que no es mala voluntad si no lo hace y, que es muy probable que la gran mayoría no lo haga.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 22 Jun 2007 04:11 am
jejeje si si, lo se Hernán, pero como "gabynufe" bajo mi fla y de ahí me pudo solucionar el problema,
pense que quizás ella o alguien que entienda pueda modificar el código por el que ella puso por
último. Yo lo hice pero así no me funcionó. Gracias igual...

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox
Citar            
MensajeEscrito el 25 Jun 2007 10:35 pm
probado y funcionando:

Código :

// arreglo de botones del menu, se colocan los nombres de instancias de cada botón, 
// ruta completa desde root (sin comillas)(sin _root)
arrBtns = [Ubicacion.Btn, Contacto.Btn, Nosotros.Btn, Maquinas.Btn, Etiquetas.Btn]; // ETC...
SobreBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay(2);
}
SaleDelBtn = function () {
   if (!this.swPresionado) this.gotoAndPlay("out");
}
PresionadoBtn = function (objBtn) {
   _root.BtnPresionado.gotoAndPlay("out");
   _root.BtnPresionado.swPresionado = false;
   objBtn.gotoAndStop(13);
   objBtn.swPresionado = true;
   _root.BtnPresionado = objBtn;
}
Ubicacion.Btn.onPress = function () {
   PresionadoBtn(this);   // aqui abajo colocas el codigo que se ejecuta para el boton Casa
   trace("la casa es muy bonita");
}
Contacto.Btn.onPress = function () {
   PresionadoBtn(this);   // aqui abajo colocas el codigo que se ejecuta para el boton Ventana
   trace("La ventana es muy grande");
}
Nosotros.Btn.onPress = function () {
   PresionadoBtn(this);   // aqui abajo colocas el codigo que se ejecuta para el boton Perro
   trace("El perro ladra muy fuerte");
}

for (i=0; i < arrBtns.length; i++) {
   objBtn = arrBtns[i]; // OJO
   objBtn.onRollOver = SobreBtn;
   objBtn.onRollOut = SaleDelBtn;
}
BtnPresionado = null;
PresionadoBtn(arrBtns[0]); // suponiendo que es el primer boton del 


le corregi unas cositas...

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 26 Jun 2007 02:00 am
Como siempre... gracias Gaby!! Me funcionó perfectamente.

Mil gracias, de enserio.

Cristian.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox

 

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