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

Problema con un bucle!

Estas en el tema de Problema con un bucle! en el foro de Flash y Actionscript en Foros del Web. Hola, estoy haciendo un flash que lea el numero de elementos y la posición que hay en una base de datos y los coloque en ...
  #1 (permalink)  
Antiguo 14/10/2008, 12:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 9 años, 2 meses
Puntos: 0
Exclamación Problema con un bucle!

Hola, estoy haciendo un flash que lea el numero de elementos y la posición que hay en una base de datos y los coloque en el escenario en función a los resultados...

ej:
hay 4 bolas en la base de datos, la primera a la posición x=10, y=20, la segunda ...
el flash mira cuantas bolas hay (4) y al pulsar un boton, entra en un bucle (mientras i sea menor o igual al numero de bolas) que llama a una funcion que crea una bola en el escenario y la coloca segun la posición de la base de datos, y luego incementa i+1.


Si pongo que al pulsar el boton me llame a la funcion y me sume 1 a i, el programa funciona perfectamente, pero a la que intento ponerle el while para que no tenga que ir pulsando el boton tantas veces como elementos haya, me encuentro en que solo me aparece el último elemento en el escenario.

CODIGO:

var i:Number
var maxbolas:Number
maxbolas=4; //numero de elementos de la base de datos
i=0; // contador

recibir = function () {
myData = new LoadVars();
myData.numbola = i; // para enviar a php
myData.onLoad = function() {

_root.x_bola = myData.pos_x; // la posicion x del elemento "i"
_root.y_bola = myData.pos_y; // la posicion y del elemento "i"

// función para crear movieclip con un numero de referencia y con una imagen "bola.pnf"

createEmptyMovieClip("bola"+i,i+1);
_root["bola"+i].createEmptyMovieClip("ref",i+2);
_root["bola"+i].ref.createTextField("referencia", i+2, 10, 50, 50, 50);
_root["bola"+i].ref.referencia.text=_root.i;
_root["bola"+i].ref.createEmptyMovieClip("foto",i+3);
loadMovie("bola.png", _root["bola"+i].ref.foto);
_root["bola"+i]._x=_root.x_bola; //posicion de la bola recibida del php
_root["bola"+i]._y=_root.y_bola; //posicion de la bola recibida del php
_root["bola"+i].onPress=function(event){_root["bola"+i].startDrag();}
_root["bola"+i].onRelease=function(event){_root["bola"+i].stopDrag();}

};
myData.sendAndLoad("consulta_boles2.php", myData, "POST");
};

enviar_btn.onPress = function() {
while(i<=maxboles-1){
i+=1;
recibir();
}

};


El codigo es un poco coñazo, pero lo que no acabo de entender es que al pulsar el boton, si quito el wile (quedando solo el i=i+1; recibir();) me añade un elemento cada vez que lo pulso (hasta llegar a i=maxbolas+1), pero al ponerle el while, solo me carga el último elemento...

Cúal es el problema? Carga un elemento encima del otro?

Muchas gracias!

Última edición por bernattorras; 14/10/2008 a las 12:21
  #2 (permalink)  
Antiguo 14/10/2008, 15:11
Avatar de PabloSutra  
Fecha de Ingreso: octubre-2006
Ubicación: Guadalajara, México
Mensajes: 222
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con un bucle!

No se si copiaste mal el codigo o no pero veo el fallo en el while porque la sentencia dice
Cita:
while(i<=maxboles-1)
Y tu variable se llama maxbolas
  #3 (permalink)  
Antiguo 14/10/2008, 15:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 9 años, 2 meses
Puntos: 0
Exclamación Respuesta: Problema con un bucle!

Gracias por tu respuesta, pero nono, el codigo esta bien... ha sido un despiste al copiarlo aqui...

Creo que el problema es que entra en el bucle 4 veces, pero lo hace demasiado rapido... sin darle tiempo al php de recuperar los datos del MySQL... Eso es lo que pasa también si le doy al boton 4 veces seguidas... en vez de cargarme 4 bolas, solo me carga la última...

Que deberia hacer? Poner algun listener o algo para verificar que los datos se reciben a cada itineracion?

Que alguien me ayude! ;)

Última edición por bernattorras; 14/10/2008 a las 15:31
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 23:52.