Comunidad de diseño web y desarrollo en internet online

Problemas con el bucle FOR

Citar            
MensajeEscrito el 21 Oct 2005 05:30 pm
Hola

Tnego que crear 5 botones iguales, la diferencia es que cada uno llama a un moviClip distinto y descarga los otros 4, además cada uno tiene una caja de texto dinámica en la que aparece su propio título de botón. Sé que sería más rápido y más correcto hacerlo utilizando el bucle for pero no lo he llegado a entender.

He leído el tutorial en el que explicáis:

for (I=0;I<=4;I++) {
_root.attachMovie("símbolo 1","boton_" add I,I);
_root["boton_" add I]._y = 10 * I;
trace(_root["boton_" add I);
}

Pero no me basta. ¿Alguien me lo puede explicar un poco más, por favor?

Muchas gracias!!

Xiki

Por Xiki

23 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 21 Oct 2005 05:53 pm
wtf, el add ya es obsoleto, utiliza el +
a que te refieres con llama a un clip....

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

msie
Citar            
MensajeEscrito el 21 Oct 2005 07:53 pm
debes usarlo de la siguiente menera con el +en ves del ADD

for (I=0;I<=4;I++) {
_root.attachMovie("símbolo 1","boton_" + I,I);
_root["boton_" +I]._y = 10 * I;
trace(_root["boton_" +I);
}

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 01:13 pm
Hola, muchas gracias.

Tengo otra pregunta:

Código :

for( var k:Number = 0; k<=4; k++ )
{
   pintarTexto[k] = function( )
   {
      this.attachMovie( "texto"+[k], "texto"+[k], this.getNextHighestDepth( ), {_x:650, _y:525 });
   }
}


Si cargara de esta manera unos textos (son 5) ¿cómo podría decargarlos utilizando el mismo bucle for?

Código :

borrarTexto[k]= function( )
{
   texto+k.removeMovieClip( );
}


Muchas gracias!!

Xiki

Por Xiki

23 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 22 Oct 2005 01:28 pm
bueno, primeramente no habia visto eso de funciones como tipo array , lo mas comun seria , crear mi funciona y llamarla , lo que estas haciendo segun mi parecer , si es que asi funciona, nunca lo he hecho crear funciones y tratarla como un array de esa forma en ActionScript, creo que esas usando mas recursos de lo normal , puedes simplemente crear la funcion y llamara cuandoquieras, independientemente de la cantidad de textos que desees hacer,. pero para eliminar cual quier objeto , por ejemplo si los quieres eliminar todos , solo tendrias que usar un ciclo "FOR" per usando this de la siguiente manera

for(i=0;i<X;i++)
{

this["text"+i].removeMovieCLip;
}

ya que enralidad estas creando movieClip Como si fueran duplicados.
puede ser this["OJBinstanceName"].property

_root["OJBinstanceName"].propiedad
_parent["OJBinstanceName"].propiedad

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 01:32 pm
Es que estoy empezando con todo esto, Mundix, y probablemente tampoco me funcione el primer bucle for en el que meto la función. ¿me podrías explicar mejor cómo lo harías tú con un array?

Gracias, Xiki

Por Xiki

23 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 22 Oct 2005 01:49 pm
bueno , como yo lo veo , no es que tenga una experiencia del otro mundo , si no que con lo que he trabajado , si deseas multiplicar botones ? cierto ? tendrias que crear un movie Clip con los objetos de texto tipo dinamico dentro con nombres de instancias por medio de un ciclo como se podria hacer ,un ejemplo seria :


//siempre y cuando hallas creado el principal , con los obj tipo texto dinamicos que necesites dentro de el

mc_textHolder0.duplicateMovieClip("mc_txt1"+i,i); //con esto duplicas el movieClip

si lo pones enun for te crea tantas veces i incrementes , entonces luego tendrias que hacer lo siguiente en el for , para ponerle las propiedades a C/u ,

for(i=0;i<10;i++)
{
mc_textHolder.duplicateMovieClip("mc_txt"+i,i) //aki duplicas 10 veces los movieclips
//empezando desde mc_txt0 -> mc_txt9
//luego a medida que los vas creando les vas poniendo las propiedades de la siguiente manera usando this["mc_txt"+i]._x si no te funciona usa _root["mc_txt"+i]

this["mc_txt"+i]._y=mc_textHolder._y+i*mc_textHolder._height*1.3;

//bien esto es un ejemplo de como puede ubicar el texto hacia abajo con una separacion del 30% de largo que tiene las letras o elboton y si el original es asi :

BOTOM 1 , lo demas saldrian asi

BOTOM 2

BOTOM 3

...
BOTOM 10
//el me multiplica la i para saber en posicion cae y las divisiones las hace automaticas con el porcetaje y es como si sumar 10 veces la posicion con la cantidad de pixeles que se lleve el texto de largo , haciaabajo ;)


Espero que esto te sea de utilidad

y si deseas eliminarlo simpleente tendrias que usar


this["mc_txt"+i].removeMovieClip

}

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 01:56 pm
Creo que sí lo entiendo, pero el problema lo sigo teniendo: Si dentro de cada clip hay una caja de texto dinámico y en cada clip quiero que esa caja de texto presnete un texto diferente que no sea botón 1, botón 2, etc. ¿cómo puedo hacerlo?

Bueno, tal vez no se puede, no lo sé.

Gracias!!!

Por Xiki

23 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 22 Oct 2005 03:57 pm
bien sencillo por ejemplo si tienes un MC_ con lo que sea por ejemplo mc_txts0
y ya duplicaste con mc_txts1,mc_txts2. mc_txts10, bien lo unico que tienes que hacer es referirte al texto dinamico de la siguiente manera hay mas de una forma, aunque creo que siempre la uso de diferentes formas :p ...
bueno si dentro de mc_txts0 existe un obj tipo texto dinamico con el nomre txtNombre
imaginate que cuando lo duplique , logicamente en cada movieClip se llamara igual, por lo tanto solo tendrias que variar el nombre del mc_txtHolder,hasta ahi no c si me entiendes de la siguiente manera
//#1 duplico
mc_txts0.duplicateMovieClip("mc_txts"+i,i); de la forma que quiera con los ciclos que quieras una ves realizados y reubicado cada uno , para ponerle el nombre solo tienes que poner de las siguientes manera

o directamente
mc_txts1.txtNombre="Botom 1";
mc_txts2.txtNombre="Botom 2";
mc_txts10.txtNombre="Botom 10";

tendrias que ahcerlo para los diez , pero en un ciclo for

for(i=1;i<=10;i++)
{
this["mc_txts"+i,i].txtNombre="Botom"+i;
}
si no te funciona con this usa el _root["mc_txts"+i]; eso lo puedes ir haciendo a medida que los vallas ubicando y creando para no tener k hacer tantos ciclos a la ves ;)

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 04:06 pm
si tieens cuenta de hotmail y deseas puedo enviarte muchos ejemplos que e creado y me gustan hacer , solo me dices para k vallas viendo cosas k me tomaron mucho tiempo aprender y luego de k entendi me e esforzado para mejorarlas

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 04:09 pm
Exactamente con este codigo lo hice , y funciona perfectamente como te habia dicho :

var i:Number=0;
mc_txts0.txtNombre.text="Botom 0";
for(i=1;i<=10;i++)
{
mc_txts0.duplicateMovieClip("mc_txts"+i,i);
_root["mc_txts"+i]._y=mc_txts0._y+i*mc_txts0._height*1.3;
_root["mc_txts"+i].txtNombre.text="Botom "+i;

}

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 22 Oct 2005 04:17 pm
Si varias el 1.3 a 1.02 puedes notar la diferencia de que tam peguado queres que aparezcan los botones

Por Mundix

81 de clabLevel



Genero:Masculino  

Republica Dominicana

msie
Citar            
MensajeEscrito el 23 Oct 2005 07:50 am
Sí que tengo hotmail y me interesa hablar contigo. Muchas gracias.

Si quieres agrégame en el messenger, es una cuenta passport: xiskya[arroba]terra.es

Saludos,

Xiki

Por Xiki

23 de clabLevel



Genero:Femenino  

msie

 

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