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

MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

Estas en el tema de MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo en el foro de Flash y Actionscript en Foros del Web. El caso es que con este pequeño codigo, cuando hago click en el MovieClip RRR, me devuelve en la salida de datos un 4, lo ...
  #1 (permalink)  
Antiguo 25/08/2012, 12:42
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

El caso es que con este pequeño codigo, cuando hago click en el MovieClip RRR, me devuelve en la salida de datos un 4, lo cual no tiene sentido, si alguien me puede explicar porque este codigo me devuelve 4 en vez de devolver 0 1 2 3 se lo agradecería mucho, este codigo es la simplificacion de un gran problema en un programa mas complejo. pero este cogido debería de funcionar por si solo. Gracias

var cast:Array = new Array();
for (var i=0; i<4; ++i)
{
cast[i] = function (Event:MouseEvent):void
{
trace(i);
}
RRR.addEventListener(MouseEvent.MOUSE_DOWN,cast[i]);
}
  #2 (permalink)  
Antiguo 25/08/2012, 16:01
Avatar de yonic  
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

Es posible que al poner el bucle for y dentro la función, la variable "i" se iría sumando cada vez que se procesara el bucle, y por eso te diera 4.

De todas formas, este es el código correcto:
Código actionscript:
Ver original
  1. var cast:Array = new Array();
  2.  
  3. function casti(Event:MouseEvent):void {
  4.     for (var i=0; i<4; i++) {
  5.         trace(i);
  6.     }
  7. }
  8. RRR.addEventListener(MouseEvent.MOUSE_DOWN,casti);

En el panel de salida debería aparecer al hacer clic sobre el botón RRR:
Código:
0
1
2
3
Espero haberte ayudado.
  #3 (permalink)  
Antiguo 25/08/2012, 16:14
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

Antes de todo ¡Muchas Gracias!, pero lamentándolo mucho lo cierto es que este código no resuelve mi problema, ya que este código es una simplificacion de otro más grande, en el cual no puedo utilizar el for dentro la función.
Voy a realizar un código algo más extenso, para mostrar el porque no puedo utilizarlo asó. muchas gracias de nuevo y Saludos.
  #4 (permalink)  
Antiguo 25/08/2012, 16:43
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

Aquí está el código. He creado un MovieClip que tengo en la biblioteca vinculado como RRR.

Se supone que el segundo FOR habría de repetir la función de manera ordenada, es decir que cuando haga click en el RRR numero 1 saliera un 1 por la consola. en el numero 2 un 2.... etc... Si alguien me puede ayudar.....

Código ASP:
Ver original
  1. var contenedor1:Sprite = new Sprite();
  2. addChild(contenedor1);
  3. var RRRa:Array = new Array();
  4. var cast:Array = new Array();
  5. var mc:RRR;
  6. for (var o=0; o<4; ++o)
  7. {
  8.     mc = new RRR();
  9.     mc.x = 30;
  10.     mc.y = 40 +(mc.height + 30) * o;
  11.     RRRa.push(mc);
  12.     contenedor1.addChild(mc);
  13. }
  14.  
  15. for (var i=0; i<4; ++i)
  16. {
  17.     cast[i] = function (Event:MouseEvent):void
  18.     {
  19.         trace(i);
  20.         trace(cast[i]);
  21.     }
  22.     RRRa[i].addEventListener(MouseEvent.MOUSE_DOWN,cast[i]);
  23. }
  #5 (permalink)  
Antiguo 25/08/2012, 17:14
Avatar de yonic  
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

Bueno, después de un poco de pruebas he descubierto la solución.

Aquí tienes el código:
Código actionscript:
Ver original
  1. var contenedor1:Sprite = new Sprite();
  2. addChild(contenedor1);
  3. var RRRa:Array = new Array();
  4. var cast:Array = new Array();
  5. var mc:RRR;
  6. var v=4;
  7. for (var o=0; o<4; ++o) {
  8.     mc = new RRR();
  9.     mc.x=30;
  10.     mc.y = 40 +(mc.height + 30) * o;
  11.     RRRa.push(mc);
  12.     contenedor1.addChild(mc);
  13. }
  14.  
  15. for (var i=0; i<4; ++i) {
  16.     cast[i] = function(e:MouseEvent) {
  17.             trace(i-v);
  18.             v--;
  19.     };
  20.     RRRa[i].addEventListener(MouseEvent.MOUSE_DOWN,cast[i]);
  21. }

Espero que te sirva de gran ayuda.
  #6 (permalink)  
Antiguo 25/08/2012, 17:33
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: MISTERIO AS3 en USO de "FOR"solo 4 lineas de codigo

¡Gracias de nuevo! Bueno resulta que esto no da con la solución porque hagas click en cualquiera de los botones siempre salda primero un 0 luego 1, 2 , 3 etc.. lo que necesito es que cuando pulse el boton 4 salga 4, cuando pulse el 2 salga 2 etc...

Etiquetas: as3, evento, funcion, loop
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:52.