Comunidad de diseño web y desarrollo en internet online

problema con Array

Citar            
MensajeEscrito el 27 Sep 2004 02:16 am
Muy buenas una vez más.
Me ha surgido un problemilla que no se por donde enfocarlo.

Código :

//declaro la matriz de los botones 
botones=new Array(); 
botones[0]="btn1"; 
botones[1]="btn2"; 
botones[2]="btn3"; 

//un bucle que recorre la matriz 

for (i=0; i<botones.length; i++) { 

desactiva=botones[i] 

//trace(desactiva) 

//devuelve 
//btn1 
//btn2 
//btn3 
//hasta aqui todo va bien 

desactiva.enabled=false 
desactiva.useHandCursor=false 

//no ocurre nada  


} 

//pruevo aqui a ver 
trace(desactiva) 
//devuelve 
//boton 3  

//Aqui ya comienzo a dudar de haber asimilado nada en las horas que me he pasado estudiando los arrays. 

//pruevo lo siguiente... 

desactiva=btn1; 
desactiva.enabled=false; 
desactiva.useHandCursor=false; 
//y funciona 
 

//trace desactiva 
//devuelve 
//_level0.btn1
//en este punto se me va la mano a la barbilla y decido que es hora de haceros una visita.   

si me podeis arrojar un poco de luz en este tema sera bienvenido.

Por jmjuarez

6 de clabLevel



 

unknown
Citar            
MensajeEscrito el 27 Sep 2004 06:49 am
intenta con

Código :

desactiva=eval(botones[i]); 

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 27 Sep 2004 06:58 am
el problema es que el primer caso estas asignando un string y en el segundo el nombre de instancia del boton.

si lo haces como el primer caso tendrias que poner

Código :


//declaro la matriz de los botones
botones=new Array();
botones[0]="btn1";
botones[1]="btn2";
botones[2]="btn3";

for (i=0; i<botones.length; i++) {

desactiva=botones[i]

this[desactiva].enabled=false
this[desactiva].useHandCursor=false 



y si lo haces asignandole el nombre de instancia

seria

Código :


//declaro la matriz de los botones
botones=new Array();
botones[0]= btn1;
botones[1]= btn2;
botones[2]= btn3;

for (i=0; i<botones.length; i++) {

desactiva=botones[i]

desactiva.enabled=false
desactiva.useHandCursor=false 



entonces debe funcionar cuanquiera de estos casos.

El problema no era del arreglo, sino que no estabas ulizando bien lo que tenias dentro.

Espero te sirva la aclaracion...

Por Alucard

54 de clabLevel



Genero:Masculino  

Universidad

unknown
Citar            
MensajeEscrito el 27 Sep 2004 12:51 pm
las dos respuestas funcionan perfectamente.Gracias a ambos por su dedicación y tiempo.
Para complementar tengo una pregunta a la cual no encuentro solución

//declaro la matriz de los botones
botones=new Array();
botones[0]= btn1;
botones[1]= btn2;
botones[2]= btn3;
//asigno un boton a una variable
desactivado=btn2;
//trace(desactivado);
for (i=0; i<botones.length; i++) {

indice=botones[i]
//trace(indice)
//solo quiero desactivar un boton los demas han de permanecer activos
desactiva=indice-desactivado
trace(desactiva)
//y sale
//NaN
//NaN
//NaN

desactiva.enabled=false
desactiva.useHandCursor=false
}
Mi pregunta es:hay algún modo de restar un elemento a una matriz

Por jmjuarez

6 de clabLevel



 

unknown
Citar            
MensajeEscrito el 27 Sep 2004 03:55 pm
utiliza
botones.splice(indice,cantElementos)
donde indice es a partir de que valor quieres borrar y cantElementos la cantidad de elementos a partir de ese que quieres borrar.


en el caso que me pones seria

Código :

botones.splice(1,1);



ejemplo:

Código :

//declaro la matriz de los botones
botones=new Array();
botones[0]= btn1;
botones[1]= btn2;
botones[2]= btn3;

//elimino el boton btn2 que esta en la posicion 1.
botones.splice(1,1);

trace("tengo "botones.length+" botones");
//te dira entonces que solo hay 2 botones.




y te quitara del arreglo a "btn2"

Por Alucard

54 de clabLevel



Genero:Masculino  

Universidad

unknown
Citar            
MensajeEscrito el 27 Sep 2004 03:59 pm
esto esta medio roto.

cambia el code de arriba por este...
//declaro la matriz de los botones
botones=new Array();
botones[0]= btn1;
botones[1]= btn2;
botones[2]= btn3;

//elimino el boton btn2 que esta en la posicion 1.
botones.splice(1,1);

trace("tengo "+botones.length+" botones");
//te dira entonces que solo hay 2 botones

Por Alucard

54 de clabLevel



Genero:Masculino  

Universidad

unknown
Citar            
MensajeEscrito el 28 Sep 2004 07:03 pm
Gracias Alucard tu empeño y generosidad hace que comprenda mejor el objeto Array. Encotre interesante desactibar botones utilizando un array y como ejercicio utilice tres botones. Ahora bien si se tratara de por ej 50 botones ¿como busco dentro de la funcion splice el boton que quiero desactivar?, no vi el modo.
Econtre esta otra solucion.


que me la proporciono el siempre paciente Sgiraldo.

Código :

var opcActual //Definimos la variable y no le ponemos valor 

function canviaActual(obj){ 
   if(opcActual!=obj){ 
      obj.enabled = false //Aquí lo que quieres que haga cuando se pinche en un botón 
      if(opcActual){ //Comprobamos si la variable opcActual tiene valor (no es la primera vez) 
         opcActual.enabled = true //Lo que quieras hacer con la opcion pulsada anteriormente 
      } 
      opcActual = obj 
   } 
} 
btn1.onRelease=function(){ 
     canviaActual(this) 
} 

Por jmjuarez

6 de clabLevel



 

unknown

 

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