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

for

Estas en el tema de for en el foro de Flash y Actionscript en Foros del Web. Hola a todo el mundo bueno pues estoy empezando a trabajar con los bucles, para ser más específico con el for , y aunque de ...
  #1 (permalink)  
Antiguo 04/06/2003, 13:59
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
for

Hola a todo el mundo bueno pues estoy empezando a trabajar con los bucles, para ser más específico con el for, y aunque de cierto modo logro intuir su funcionamiento, les pido su ayuda para que esto sea bien fundamentado y no sobre las nubes (ademas que no me funciona, jejeje):

Código:
variable = 0
for ( variable=0; variable == 10; variable ++) {
	duplicateMovieClip(_root.bola_mc, bola, 10);
	this._x = random(500);
	this._y = random(400);
	variable += 1;
}
Ok bueno primero defino la variable como 0 e inicio el bucle, dando la condicion inicial y la final, hasta aquí todo bien, pero hay algo que no me queda muy claro, es el siguiente parámetro, en otros ejemplos he visto que lo ponen el nombre de la variable y un operador de suma o resta, mi primera pregunta es ¿qué utilidad tiene este parámetro?

Lo de dentro de los corchetes esta más o menos claro, aunque si hay un error (muy probable ) diganme pls donde anda el error.

Gracias de antemano.
Saludos desde México.
__________________
blog.juwestudio
  #2 (permalink)  
Antiguo 04/06/2003, 14:20
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Para utilizar el For no necesitas inicializar la variable que ocuparas.

ahora los parametros son los Siguiente

for(variable=valorInicial; Condicion; incremento o decremento de variable);

ahora el for se ejecutara mientras la condicion se verdadera en tu ejemplo no funciona por que pones variable==10 siendo que variable vale 0, la condicion nunca se cumple..

Entonces seria algo asi:


Código:
for(variable=0; variable<10; variable++) {
	duplicateMovieClip(_root.bola_mc, "bola", variable);
	this._x = random(500);
	this._y = random(400);
	}
Saludos!!
  #3 (permalink)  
Antiguo 04/06/2003, 14:30
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Gracias TMesister.

Ok, entonces el "variable ++" es el que ordena que se incremente la variable ¿cierto?

Saludos desde México.
__________________
blog.juwestudio
  #4 (permalink)  
Antiguo 04/06/2003, 14:40
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Efectivamente!!

Ahora si lo que quieres es Decrementar la variable utiliza

Código:
variable--
Saludos!!
  #5 (permalink)  
Antiguo 04/06/2003, 14:48
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Muchas gracias men, gracias por la paciencia; ahora vas a necesitar un poco más de ella porque ahi viene una dudilla más; al correr este script me duplica la mc una sola vez en el escenario, ¿qué código debo poner para que me la duplique "n" veces, o mejor dicho "variable" veces?

Gracias again!!!
__________________
blog.juwestudio
  #6 (permalink)  
Antiguo 04/06/2003, 15:04
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Código:
for(i=0; i<10; i++){
	clip = bola.duplicateMovieClip("bola"+i, i)
	clip._x = random(500);
	clip._y = random(400);
	}
Ahi lo tienes bola es el nombre del MC y "bola"+i seran los nuevos nombres.

Ahora te recominedo que en vez de Duplicar los MC los Ataches desde la Libreria !!

Saludos!!
  #7 (permalink)  
Antiguo 04/06/2003, 15:08
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0


Entendido y anotado men.

Gracias por enésima vez. jejeje.
__________________
blog.juwestudio
  #8 (permalink)  
Antiguo 04/06/2003, 17:02
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
Ademas debes saber que la sentencia for es bastante flexible, es decir acepta varios formatos por ejemplo..
puedes tener un for que sea asi-->

var i =0;//donde inicialisas tu i afuera
for(;i<10;i++){
..........cuerpo del for
}

o puedes tener un for que sea asi-->

for(i=0;;i++){
if(i==10){break}//donde la condicion la contolas desde adentro
..........cuerpo del for
}//el break salta a la siguente linea depues del for

o puedes tener un for que sea asi-->

for(i=0;i<10;){
i++;//donde incrementas el i adentro del cuerpo
....cuerpo del for
}

y por ultimo puedes tener un for que sea asi-->

for(;;){
trace("Y LUEGO ME CUENTAS..!");//
}




Saludos
__________________
http://www.flotdesign.dk/
  #9 (permalink)  
Antiguo 04/06/2003, 23:59
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Ok, ahora la pregunta es, ¿cuándo es conveniente usarlo de uno u otro modo? y otra, he estado usándolo para ejemplos sencillos, pero ¿cuáles son las aplicaciones más usuales de este tipo de bucles? y ¿cuándo es conveniente usarlo en lugar del while o el do while? y espérense que proximamente les preguntaré acerca de estos dos últimos, jejeje.

Gracias Maltos y Pulento.

Saludos desde México.
__________________
blog.juwestudio
  #10 (permalink)  
Antiguo 05/06/2003, 04:03
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
Para saber cual usar y de que forma..debes saber que funcion cumple cada uno de estos bucles.

El for se usa (comunmente) para trabajos repetitivos donde el mismo trabajo se realiza una determinada cantidad de veces.
Ej ..inicializacion de un campo en un array.
crear una cantidad de mc, duplicar estos etc..
El while es un poco mas funcional ya que puedes usarlo para realizar diferentes tareas dentro de este y combinarlo con otras sentencias como if, if else y for, e incluso puedes tener uno o mas while dentro del principal. Digamos que el while abarca una estructura mas amplia.
Prueba este ejemplo.-->
Ej.

var j=0;
var k=1;
var l=2;
while(j==0){
while(k==1){
if(l==2){
for(i=0;i<10;i++){
trace("Realmente adentro..!")
}
} k=2;//para salir del while interno
}j=1;//para salir del while principal.
}

En el caso del while..la estructura es muy similar a la de un for..te explico, puedes hacer un while que simule un for-->

Ej

for(i=0;i<10;i++){
cuerpo del for
} //cuando la condicion no se cumple se sale

Un while que hace lo mismo seria-->

var i =0;
while(i<10){ //cuando la condicion no se cumple se sale
i++;
cuerpo del while..
}

un do ..while seria-->

var i=0;
do{
cuerpo del do while

}while(i<10) //cuando la condicion no se cumple se sale


La diferencia principal entre un while y un do while radica en que el do while hara lo que le pides, por lo menos una vez y luego chekeara la condicion, y si la condicion no se cumple se saldra. Pero el while chekeara la condicion primero y si esta no se cumple entonces no entrara en el while ni una vez .

Con respecto de cual usar ..... depende de la necesidad.
Lo que te recomiendo es practicar con todos, con pequeños ejercicios y de esa manera te daras cuenta cual es el mas adecuado. (Te puedo adelantar que comunmente no se suele entrar en un bucle y luego chekear la condicion), razon por la cual el do while no es muy usado.

Y de esto se puede concluir que (segun mi opinion)..
Mas importante que dominar las estructuras de bucles, es dominar y entender las condiciones .. que son la medula del codigo...


Saludos.
__________________
http://www.flotdesign.dk/

Última edición por pulento; 05/06/2003 a las 04:09
  #11 (permalink)  
Antiguo 05/06/2003, 11:54
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Ufff pedazo de ayuda, muy buena la explicación Pulento, si que tengo un buen rato para ponerme a practicar esto de los bucles, jeje. Con respecto a las condiciones, te refieres a las condicionales como un if else?? pues hasta eso creo que por ahi no ando tan perdido (segun yo). Voy a probarlos a ver que pasa.

Gracias.
__________________
blog.juwestudio
  #12 (permalink)  
Antiguo 06/06/2003, 07:07
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
No cuando hablo de condiciones ..me refiero a la condicion que controlara el bucle.

for(i=0;condicion;i++){...}

while(condicion){...}

if(condicion){...}

if else(condicion){...}

Ya que de la condicion dependera de si tu bucle se realiza o no..
Ademas es de vital importancia para entender codigos de otros programadores.



Saludos
__________________
http://www.flotdesign.dk/
  #13 (permalink)  
Antiguo 06/06/2003, 12:48
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Jeje, bueno creo que con esas condicionales no tengo tanto problema, al menos a nivel básico, en un nivel más complejo igual y si estoy chiras pelas (no por mucho tiempo, jeje).
Gracias.
Saludos desde México.

Ya hice mi primer ejercicio práctico con un while, igual y se puede hacer con un if..else pero haber si estoy en lo correcto:

Código:
porcentaje = int((_framesloaded/_totalframes)*100)
while(porcentaje<100) { 
gotoAndPlay(_currentframe -1);
_root.barra._xscale = porcentaje;
}
play();
Esto esta en el segundo frame de la película, en el primero esta el mc llamado barra. No estoy seguro si el play de afuera del while sea necesario pero se lo puse por si las dudas. No lo he podido probar porque mi FTP esta fallando, al rato si lo levantan lo checo.

Saludos desde México.
__________________
blog.juwestudio

Última edición por juwe; 06/06/2003 a las 12:48
  #14 (permalink)  
Antiguo 07/06/2003, 00:06
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Sip de hecho es lo que he notado con el if.. else en el segundo frame hay un gotoAndPlay (_currentframe -1) y esta yendo y viniendo hasta que se cumpla la condición, por eso trate de emularla, aunque no habia tomado en cuenta eso que me dices Arturo, pero esto va directo a mi libreta de apuntes. Gracias.

Saludos desde México.
__________________
blog.juwestudio
  #15 (permalink)  
Antiguo 09/06/2003, 00:13
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años
Puntos: 0
Ok. Esto me esta ayudando bastante. Gracias a todos.

Saludos desde México.
__________________
blog.juwestudio
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 04:01.