Comunidad de diseño web y desarrollo en internet online

Ayuda Timer!!

Citar            
MensajeEscrito el 24 Feb 2010 10:44 am
Buenas a todos!

Tengo 3 problemas, 2 de timers, i 1 de un MC,

Primero:
Mi codigo del Timer es este:

Código ActionScript :

var tiempo = new Timer(3000,1000000); //3 segundos, 1 milion de repeticiones (como se pone infinitas repeticones¿?)
tiempo.addEventListener("timer", timerHandler);

function timerHandler(event:TimerEvent):void {
      CargarFoto();
}

tiempo.start();


Problemas:
_Como se pone infinitas repeticiones al Timer¿? bueno, esto no es muy importante que digamos.
_La primera carga del timer la hace al cabo de 3 segundos (como es lógico) pero a mi lo que me gustaria es que el timer
ejecutara la primera "CargarFoto" al instante, i despues las otras cada 3 segundos, porque sino la primera vez no se
carga hasta que han transcurrido los 3 primeros segundos, y como entedereis es un problema.
_En pocas palabras, eso carga fotos a un MC (con preloader y tal) el problema es que tengo la sensación que ha veces va mas rápido, o hace cosas raras, es posible? quereis el codigo?


Problema con el MC:
_Es possible "vaciar un MC" es decir... algo "bruto del estilo: miMC.borraTodosLosChild()", porque yo he probado el siguiente codigo y no funciona:

Código ActionScript :

var l:int = clip.numChildren-1
         for(var j = l; j >= 0;j--){
            clip.removeChildAt(j);
         }




Gracias a todos!!!!!!!! :)

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Feb 2010 01:35 pm
En el primer caso haz:

Código ActionScript :

var tiempo = new Timer(3000); 
tiempo.addEventListener("timer", timerHandler); 
CargarFoto()


Al omitir el segundo parámetro no hay límite de repeticiones. El código para remover los hijos está perfecto, seguramente quieres hacer otra cosa, aunque parezca que es solo remover childs (por ejemplo, el child está en otro contenedor, etc)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Feb 2010 02:40 pm
Gracias solisarg!

lo de eliminar el 2n parametro va perfecto, y lo de remover los childs voy a batallarme un poco mas jeje!

una cosa, para que la primera vez no tarde en cargar¿?

es decir, ahora hace eso: espero 3s -> cargo -> espero 3s -> cargo -> espero 3 s ....
y yo quiero: cargo -> espero 3 s -> cargo -> espero 3 s->...

alguna idea¿?

graciaaaaas!

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Feb 2010 03:31 pm
Por eso agregué una llamada directa:

CargarFoto()

Que es básicamente lo que hace timerHandler, ¿la viste en mi post?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Feb 2010 04:56 pm
Buenas solisarg!

Gracias por tu atención continua!!! ;)

Lo siento mucho, no me fijé en el detalle,
Lo he aplicado y no funciona, es decir,
pongo el CargarFoto() justo antes del tiempo.start() y no hace absolutamente nada :S
es muy raro.... :(

igualmente, quiero no ser porque motivo, el timer no funciona correctamente, es decir, las fotos no se cargan exactamente cada 3segundos (a veces 3, a veces 0.5...) es algo raro...

Cuelgo toda la parte del codigo al respeto a ver si alguien encuentra el problema:

Nota: soy novato en as3, y seguramente el codigo no es muy eficiente.
Nota: es un poco largo, pero hay mucho comentario.

[as]
var array:Array=new Array();

//cridem a la funcio de crear l'array
generaArray(frame);//NO PONGO EL CODIGO (NO ES NECESARIO) la variable "array" recibirá la ruta completa de cada imagen por //cada posicion del array

var url:String = "";
var i:Number=0;

//Carga la imagen
function CargarFoto() {

url=array[i];
//Creo el objeto cargador
var loader:Loader = new Loader();
//Le añado los listeners
ponerListeners(loader.contentLoaderInfo);
//Creo el objeto que contendrá la petición
var peticion:URLRequest = new URLRequest(url);
//Cargo la petición
loader.load(peticion);

i++;
if(i==array.length){i=0;}
}

//Añade los listeners al cargador
function ponerListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler2);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
}

//Funcion que se ejecuta cuando termina la descarga.
function completeHandler2(event:Event):void {
trace("completeHandler: " + event);
//addChild(event.target.content);
//el imatge_mc esta amagat, es una linia negre
//a sobre d'on seria el dalt de la imatge.

//se tendria que vaciar el MC antes de todo de alguna forma¿?¿?
imatges_mc.addChild(event.target.content);//lo cargo en un MC de la escena


}

//Se ejecuta al recibir un código de estado HTTP
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}

//Se distribuye cuando las propiedades del objeto cargado están disponibles
//A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
function initHandler(event:Event):void {
trace("initHandler: " + event);
}

//Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un
//archivo inexistente
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

//Se ejecuta cuando comienza la operación de carga
function openHandler(event:Event):void {
trace("openHandler: " + event);
}

//Se ejecuta periodicamente mientras dura la carga
function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}

//Empezamos

//CargarFoto();


var tiempo = new Timer(3000);//cambia cada 3segons, l'alre són repeticions



//Le añadimos un listener para que nis vaya diciendo cuantas repeticiones lleva

tiempo.addEventListener("timer", timerHandler);

function timerHandler(event:TimerEvent):void {

trace("Repetición: " + event.target.currentCount);

trace("Delay: " + event.target.delay);
CargarFoto();

}
//CargarFoto();//para la primera vez. No funciona, no hace nada
tiempo.start();
[/as


Graciaaaaaaaas! :D

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Feb 2010 04:57 pm
REPITO, porque el codigo no ha quedado bien:

Código ActionScript :

var array:Array=new Array();

//cridem a la funcio de crear l'array
generaArray(frame);//NO PONGO EL CODIGO (NO ES NECESARIO) la variable "array" recibirá la ruta completa de cada imagen por //cada posicion del array

var url:String = "";
var i:Number=0;

//Carga la imagen
function CargarFoto() {

url=array[i];
//Creo el objeto cargador
var loader:Loader = new Loader();
//Le añado los listeners
ponerListeners(loader.contentLoaderInfo);
//Creo el objeto que contendrá la petición
var peticion:URLRequest = new URLRequest(url);
//Cargo la petición
loader.load(peticion);

i++;
if(i==array.length){i=0;}
}

//Añade los listeners al cargador
function ponerListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler2);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
}

//Funcion que se ejecuta cuando termina la descarga. 
function completeHandler2(event:Event):void {
trace("completeHandler: " + event);
//addChild(event.target.content);
//el imatge_mc esta amagat, es una linia negre
//a sobre d'on seria el dalt de la imatge.

//se tendria que vaciar el MC antes de todo de alguna forma¿?¿?
imatges_mc.addChild(event.target.content);//lo cargo en un MC de la escena


}

//Se ejecuta al recibir un código de estado HTTP
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}

//Se distribuye cuando las propiedades del objeto cargado están disponibles
//A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
function initHandler(event:Event):void {
trace("initHandler: " + event);
}

//Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un 
//archivo inexistente
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

//Se ejecuta cuando comienza la operación de carga
function openHandler(event:Event):void {
trace("openHandler: " + event);
}

//Se ejecuta periodicamente mientras dura la carga
function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}

//Empezamos

//CargarFoto();


var tiempo = new Timer(3000);//cambia cada 3segons, l'alre són repeticions



//Le añadimos un listener para que nis vaya diciendo cuantas repeticiones lleva

tiempo.addEventListener("timer", timerHandler);

function timerHandler(event:TimerEvent):void {

trace("Repetición: " + event.target.currentCount);

trace("Delay: " + event.target.delay);
CargarFoto();

}
//CargarFoto();//para la primera vez. No funciona, no hace nada
tiempo.start();

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Feb 2010 08:15 am
Buenos, nuevas noticias:

Lo que "el timer hace cosas raras" ya no ocurre, bueno, quiero decir que el problema no es del timer, así que solucionado.

PROBLEMA QUE NO LOGRO SOLUCIONAR: que la primera vez se cargue sin esperar....

alguien me puede ayudar, me esta dando un quebradero de cabeza..... :(

Gracias ;)

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Feb 2010 04:06 pm
Es solo usar la lógica. ¿El Timer está haciendo lo que quiero? Si la respuesta es si, veamos que hace el timer:

Código ActionScript :

tiempo.addEventListener("timer", timerHandler); 
function timerHandler(event:TimerEvent):void {  
   CargarFoto(); 
} 


Podemos asumir entonces que lo que hace Timer es llamar a CargarFoto cada 3 segundos.
Luego si llamo a CargarFoto antes de 3 segundos estaría bien ... solo debería preguntarme: ¿cuando tarda en cargar una foto? Si la respuesta es menos de tres segundos, lo restante es el tiempo que queda para verla.
En síntesis: revisa el tamaño de las fotos, agrega preloader, agranda el tiempo del timer, funcionará bien si las fotos están en cache, sino se me ocurre escaso

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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