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

Duda con setInterval

Estas en el tema de Duda con setInterval en el foro de Flash y Actionscript en Foros del Web. He estado mirando por el foro, que la función "eval" en MX2004, no se comporta como por ejemplo con JavaScript. Para "implementar" la opción de ...
  #1 (permalink)  
Antiguo 18/06/2005, 01:50
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 14 años
Puntos: 0
Pregunta Duda con setInterval

He estado mirando por el foro, que la función "eval" en MX2004, no se comporta como por ejemplo con JavaScript.

Para "implementar" la opción de "eval", se utilizan [nombredelavariable].
ejemplo:

Código:
var boton = "boton1"
this[boton].play();
Ahora bien, el problema que me encuentro es al utilizar una función común, por ejemplo, para todos los botones de un mismo trabajo. En este caso necesito crear un "setInterval" para cada uno, pero no me deja trabajar con el sistema "eval". Me explico.

El botón, es un movieClip con un cuadrado que dentro lleva dos mc más, un pequeño preloader animado y otro mc que está vacio, orientado a cargar una imágen jpg.

Cada botón, lleva un nombre de instancia diferente. Ej. boton1, boton2, boton3

Así queria "automatizar" la carga de estas imágenes en los botones.
ejemplo:

Código:
function cargaimgboton(boton,img){
     this[boton].preloader.play();
     this[boton].container.loadMovie(img);
     i1 = setInterval(this, "int1", 30);
     int1 = function(){
	total = this[boton].container.getBytesTotal();
	cargado = this[boton].container.getBytesLoaded();
	porcentaje = Math.round(cargado * 100 / total);
	if(total == cargado || porcentaje >= 99){
	     clearInterval(int1);
	     this[boton].preloader.gotoAndStop(1);
	}
     }
};
En un punto de la película lo puedo llamar así:

Código:
cargaimgboton("boton1","img1.jpg");
cargaimgboton("boton2","img2.jpg");
...
Es evidente que no llegan a cargar todas las imágnes, ya que "setInterval" es el mismo nombre para todos.

¿Puedo asignarle un nombre a "setInterval", de la misma manera que lo hago con el "eval" para flash?, ¿o simplemente este "[] eval" está orientado a objetos?

No me digan porqué, pero intenté de sustituir el setInterval por onEnterFrame y no funciona. "undefined" es el resultado de las variables "cargado" y "total". Evidentemente "porcentaje" es "NaN".

Saludos y muchas gracias por todo.
  #2 (permalink)  
Antiguo 18/06/2005, 11:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 14 años
Puntos: 0
Bueno, ya está solucionado. Quizás no sea la mejor manera, ¿poco ortodoxa?, pero me funciona :D

Lo que he hecho es no incluir la función de preload, dentro de la función para cargar la fotografia (ahora que lo veo en frio, es rebuscado). He incluido la función fuera, y de esta manera:

Código:
function cargaimgboton(boton,img){
     this[boton].preloader.play();
     this[boton].container.loadMovie(img);
     this["i1_"+boton] = setInterval(this, "int1", 30, boton);
};

int1 = function(boton){
     total = this[boton].container.getBytesTotal();
     cargado = this[boton].container.getBytesLoaded();
     porcentaje = Math.round(cargado * 100 / total);
     if(total == cargado || porcentaje >= 99){
          clearInterval(this["i1_"+boton]);
          this[boton].preloader.gotoAndStop(1);
     }
};
Además he hecho la pequeña correción (en verde), que no se si es la correcta, pero así parece que crea una variable "personalizada" para cada vez que ejecuto la función (evidentemente para cada botón)

Bueno, gracias por todo y espero que también le pueda ayudar a alguien. ;)
Saludos!!!
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 00:33.