Comunidad de diseño web y desarrollo en internet online

Porque se me cicla ¡¡¡¡¡¡¡¡¡¡¡

Citar            
MensajeEscrito el 25 Oct 2005 07:44 pm
Bueno tengo mi funcion que me llena de n numeros diferentes un arreglo (esta se encuentra en un fotograma que esta en la raiz de mi pelicula)

Código :

function LlenarArreglo(Arreglo){
   i=1
   do{
      temporal=random(20)+1
      do{   
         if (temporal==Arreglo[j]) {
            temporal=random(20)+1
            j=1
         }else{
            j++
            if (j==i){
               j=1
               salir=true
            }
         }

      }while(salir==false);
      Arreglo[i-1]=temporal
      i++
      salir=false
   }while (i<=10);
}


lo invoco desde un clip asi:

Código :

onClipEvent(load){
   this.nombrefraccion._visible=0;

   n = new Array();

     _root.LlenarArreglo(n) <-----aki lo invoko

   for (i=0;i<10;i++){
      this.nombrefraccion.duplicateMovieClip("nombrefraccion"+i,i)
      nf=this["nombrefraccion"+i]
      nf.fraccion=n[i]
      nf._y+=nf._height*i
   }
}


y todo salia, entonces bien feliz kise invocarlo 2 veces pero se me ciclo :P

Código :

onClipEvent(load){
   this.nombrefraccion._visible=0;

   n = new Array();
        dn = new Array();
        
    _root.LlenarArreglo(n) <-----aki lo invoko
    _root.LlenarArreglo(dn) <-----aki lo invoko

   for (i=0;i<10;i++){
      this.nombrefraccion.duplicateMovieClip("nombrefraccion"+i,i)
      nf=this["nombrefraccion"+i]
      nf.fraccion=n[i]+"/"+dn[i]
      nf._y+=nf._height*i
   }
}


alguien sabe porke?, gracias por su ayuda :P

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox
Citar            
MensajeEscrito el 25 Oct 2005 08:39 pm
do{
if (temporal==Arreglo[j]) {
temporal=random(20)+1
j=1
}else{
j++
if (j==i){
j=1
salir=true
}
}

}while(salir==false);


aqui salir nunca cambia su valor a false asi que nunca sale de alli.


las condiciones de while y do..while son inversas, he alli una de sus diferencias entre los dos bucles :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 25 Oct 2005 09:09 pm

Maikel escribió:

do{

if (temporal==Arreglo[j]) {
temporal=random(20)+1
j=1
}else{
j++
if (j==i){
j=1
salir=true
}
}

}while(salir==false);


aqui salir nunca cambia su valor a false asi que nunca sale de alli.


las condiciones de while y do..while son inversas, he alli una de sus diferencias entre los dos bucles :wink:




amigo Maikel, creo ke has entendido mal el codigo

Código :

i=1
   do{
      temporal=random(20)+1
      do{   
         if (temporal==Arreglo[j]) {
            temporal=random(20)+1
            j=1
         }else{
            j++
            if (j==i){
               j=1
               salir=true
            }
         }

      }while(salir==false);
      Arreglo[i-1]=temporal
      i++
      salir=false
   }while (i<=10); 

el bucle Do al ke t refieres se matiene mientras el valor es igual a false , NO cuando es false, si observas bien, dentro del Do existe unica y exclusivamente una asignacion true ke es la ke termina el ciclo, el error no se encuentra ahi, (si es ke lo hay :P), gracias por tu respuesta amigo :D

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox
Citar            
MensajeEscrito el 26 Oct 2005 03:22 pm
Pues yo creo, si he entendido bien lo que hace el código, que la variable j no la inicializas en ningún sitio, y por eso en la segunda llamada a la funcion, j nunca se hace = a i, por eso se incrementa hasta el infinito y mas alla :lol: , con lo que salir no se pone a true. Prueba poner j=1 al principio. Espero q t ayude.

Y si no, sera otra cosa :P.

Saludos !!! 8)

Por Gengis

27 de clabLevel



 

Córdoba(España)

firefox
Citar            
MensajeEscrito el 26 Oct 2005 04:20 pm
Tienes toda la razon amigo Gengis, cai en eso despues de me hice la siguiente funcion

Código :

function QuitarEspacios(texto){
   ltxt=texto.length
   i=0
   do{
      i++
      char=texto.substring(i-1,i)
      if (char<>" "){
         ntexto+=char
      }
   }while(i<ltxt+1)
   return(ntexto)
}


jeje le metia por ejemplo el siguiente texto "texto con espacios"
y me devolvia "textoconespacios"

despues la volvi a llamar con otro texto "otro texto con espacios"
y me devolvio "textoconespaciosotrotextoconespacios" y ps obviamente inicialize la variable :P

Código :

function QuitarEspacios(texto){
   ntexto=""
   ltxt=texto.length
   i=0
   do{
      i++
      char=texto.substring(i-1,i)
      if (char<>" "){
         ntexto+=char
      }
   }while(i<ltxt+1)
   return(ntexto)
}

asi ke tambien inicialize la bien amada j :) :lol:

Código :

function LlenarArreglo(Arreglo){
   i=1
   j=0
   do{
   .
        .
        .
   }while (i<11);
}


Gracias por las respuestas :D

Por Janhell

25 de clabLevel



 

San Luis Potosi, Mexico

firefox

 

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