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

problema con array

Estas en el tema de problema con array en el foro de Flash y Actionscript en Foros del Web. tengo un menu y quiero que cada vez que pase por encima se encienda el boton y cuando se quita se apague: el menu me ...
  #1 (permalink)  
Antiguo 03/06/2005, 05:03
 
Fecha de Ingreso: julio-2003
Mensajes: 437
Antigüedad: 14 años, 4 meses
Puntos: 0
problema con array

tengo un menu y quiero que cada vez que pase por encima se encienda el boton y cuando se quita se apague:

el menu me funciona si llamo a cada boton directamen, pero si usa un array para llamar a los botones siempre me llama al ultimo numero y no me funciona bien, se me encienden todos los botones.

este es el codigo:

botones=["boton1","boton2","boton3","boton4","boton5","boto n6"]

Código HTML:
for(i=0;i<=botones.length;i++){
	
	_root[botones[i]].onRollOver=function(){
		_root[botones[i]].tocado=true;
		}
	_root[botones[i]].onRollOut=function(){
		_root[botones[i]].tocado=false;
	}
	
	_root[botones[i]].onEnterFrame=function(){
		if(_root[botones[i]].tocado==true){
			_root[botones[i]].fondo.nextFrame();
			}else{
			_root[botones[i]].fondo.prevFrame();
			}
	}
}//for
  #2 (permalink)  
Antiguo 03/06/2005, 11:51
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
yo tengo exactamente el mismo problema... con otra cosa en la que utilizo esto.
_root[botones[i]].onRollOver=function(){_root[botones[i]].tocado=true;}
pero en vez de enRollOver uso onRelease... aparentemente es como que la funcion es la misma para todas las acciones de los distintos botones.
por que pareciera que la funcion llama a la variable i y su contenido sera el ultimo en el que quedo.. ... la verdad que estoy en la misma, que vos... siento no poder responderte pero si alguien responde por que pasa eso, entonces mata a dos pajaros de un tiro.
Gracias!!!
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #3 (permalink)  
Antiguo 03/06/2005, 17:35
Avatar de Prince  
Fecha de Ingreso: mayo-2003
Ubicación: DF
Mensajes: 574
Antigüedad: 14 años, 7 meses
Puntos: 1
El problema es este...
La variable " i " no se encuentra accesible dentro de la función onRelease, onRollOver, segun sea el caso.
Si quieren hacer la prueba, agreguen dentro de la función un trace(i); y van a ver que está indefinida.
__________________
- P R I N C E -
  #4 (permalink)  
Antiguo 03/06/2005, 20:58
Avatar de elwolos  
Fecha de Ingreso: febrero-2004
Ubicación: Argentina
Mensajes: 251
Antigüedad: 13 años, 9 meses
Puntos: 0
en mi caso ya hice eso del trace, pero la mia esta definida con el ultimo numero que tiene i, entonces es como si esa funcion es la misma para todos los botones, la idea sera que cada boton tenga su funcion. asi que ¿como se puede hacer eso?
__________________
W:-DL
...estas cosas pasan una sola vez en la vida... capaz dos.
Diseño Web - Desarrollo Web
  #5 (permalink)  
Antiguo 03/06/2005, 21:31
Avatar de Prince  
Fecha de Ingreso: mayo-2003
Ubicación: DF
Mensajes: 574
Antigüedad: 14 años, 7 meses
Puntos: 1
Entiendo, pero yo siempre que tengo que ponerle la misma acción a varios botones le hago de esa forma y sí me funciona. Siempre que quiera realizar alguna operación con la " i " del "for" entonces los botones los convierto en MovieClip con acciones de botones y defino una propiedad en el MovieClip que contenga el valor de i.
Ejemplo:
Código:
var clipBtns = new Array("clipBtn1", "clipBtn2", "clipBtn3");
for(var i = 0; i < clipBtns.length; i++){
  this[clipBtns[i]].indice = i;
  this[clipBtns[i].onRelease = function(){
    trace(El valor de i en "yo" es de " + this.indice);
  }
}
//Recuerda que los botones no pueden ser botones sino MovieClips
__________________
- P R I N C E -
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 12:38.