Para aquellos que hayan visto mi tip sobre Cómo crear una precarga "inteligente" en AS3 y se hayan preguntado como crear una precarga simple (como aquélla que hacíamos en AS2), les dejo el código necesario:
Código :
//Paramos la reproducción stop() //Creamos una variable que represente el porcentaje de la descarga var porcentaje:int //Iniciar la función "cargaInteligente" mediante //un escuchador mientras se carga la película this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, precarga) //Función "precarga" (calcula el porcentaje cargado) function precarga(e:ProgressEvent){ //bytes cargados var cargados:Number = e.bytesLoaded //bytes totales var totales:Number = e.bytesTotal //porcentaje de carga porcentaje = cargados*100/totales } //Iniciar la función "completado" mediante un //escuchador cuando se ha cargado la película this.loaderInfo.addEventListener(Event.COMPLETE, completado) //Cuando la carga se haya completado... function completado(e:Event):void{ //Reproducimos la película) this.play() //Eliminamos los escuchadores this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, precarga) this.loaderInfo.removeEventListener(Event.COMPLETE, completado) } // //Como extra, añadimos un código para que se muestre //el "porcentaje" en un campo de texto del escenario this.addEventListener(Event.ENTER_FRAME, mostrarPorcentaje) function mostrarPorcentaje(e:Event){ if(this.currentFrame == 1){ //Mientras que el fotograma actual sea el 1 //(que es donde debe situarse este código) porcentaje_txt.text = String(porcentaje) + "%" }else{ //En caso contrario, eliminamos el escuchador this.removeEventListener(Event.ENTER_FRAME, mostrarPorcentaje) } }
Éste código crearía una precarga y la mostraría en un campo de texto llamado porcentaje_txt. Si quieren agregar algo más (por ejemplo, una barra que indique el porcentaje de carga), solo tienen que añadirlo a la función "mostrarPorcentaje", por debajo de la siguiente linea (línea 36 del código):
Al igual que hice en el otro tip, les dejo el código sin comentarios, listo para un copy-paste
Código :
stop() var porcentaje:int this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, precarga) function precarga(e:ProgressEvent){ var cargados:Number = e.bytesLoaded var totales:Number = e.bytesTotal porcentaje = cargados*100/totales } this.loaderInfo.addEventListener(Event.COMPLETE, completado) function completado(e:Event):void{ this.play() this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, precarga) this.loaderInfo.removeEventListener(Event.COMPLETE, completado) } this.addEventListener(Event.ENTER_FRAME, mostrarPorcentaje) function mostrarPorcentaje(e:Event){ if(this.currentFrame == 1){ porcentaje_txt.text = String(porcentaje) + "%" }else{ this.removeEventListener(Event.ENTER_FRAME, mostrarPorcentaje) } }
NOTA: La línea que antes era la 36 es ahora la 18.
Espero que les ayude!!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Donpez el 04 de Septiembre de 2009
Por john el 04 de Septiembre de 2009
Por Diegomar el 04 de Septiembre de 2009
Por hola el 04 de Septiembre de 2009
Por joel_fox el 05 de Septiembre de 2009
Por mareol el 05 de Septiembre de 2009
Por ir_z el 07 de Septiembre de 2009
stop()
//Creamos una variable que represente el porcentaje de la descarga
var porcentaje:int
//Iniciar la función "cargaInteligente" mediante
//un escuchador mientras se carga la película
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, precarga)
//Función "precarga" (calcula el porcentaje cargado)
function precarga(e:ProgressEvent){
//bytes cargados
var cargados:Number = e.bytesLoaded
//bytes totales
var totales:Number = e.bytesTotal
//porcentaje de carga
porcentaje = cargados*100/totales
}
//Iniciar la función "completado" mediante un
//escuchador cuando se ha cargado la película
this.loaderInfo.addEventListener(Event.COMPLETE, completado)
//Cuando la carga se haya completado...
function completado(e:Event):void{
//Reproducimos la película)
this.play()
//Eliminamos los escuchadores
this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, precarga)
this.loaderInfo.removeEventListener(Event.COMPLETE, completado)
}
//
//Como extra, añadimos un código para que se muestre
//el "porcentaje" en un campo de texto del escenario
this.addEventListener(Event.ENTER_FRAME, mostrarPorcentaje)
function mostrarPorcentaje(e:Event){
if(this.currentFrame == 1){
//Mientras que el fotograma actual sea el 1
//(que es donde debe situarse este código)
porcentaje_txt.text = String(porcentaje) + "%"
}else{
//En caso contrario, eliminamos el escuchador
this.removeEventListener(Event.ENTER_FRAME, mostrarPorcentaje)
}
}
Listo me parece entendido pero bueno hasta la fecha aprendo hacer un loader lo hago con scenas separadas¡¡¿
Por nestorrente el 07 de Septiembre de 2009
Hacer un preloader con varias escenas? A qué te refieres? Un fotograma es más que suficiente, y así es desde ActionScript 2
Por Rodrigo el 11 de Septiembre de 2009
Muy bueno, muchas gracias.
Tengo una consulta eso si, ¿como puedo hacer para que en el texto dinámico, además del porcentaje, aparezca la palabra "cargando -"?
Gracias.
Por nestorrente el 11 de Septiembre de 2009
Rodrigo-blog :
Cambiarías esta linea:
Código :
Por esta:
Código :
Por krlotilla el 24 de Septiembre de 2009
En cuanto al preloader,en mi ordenador funciona perfectamente, pero al subir la web a la red sólo aparece 0% en el campo de texto y no varia durante la carga.
Por nestorrente el 24 de Septiembre de 2009
krlotilla-blog :
Mmm... gracias por el aviso. Miraré eso a ver si puedo solucionarlo
Por pakman el 08 de Octubre de 2009
aver si le echas un vistazo y dices que puede fallar, yo estoy en ello
merci
Por Federico el 12 de Noviembre de 2009
Por madmonkey360 el 21 de Febrero de 2010
Por dmac el 07 de Abril de 2010
Por Manuel el 08 de Abril de 2010
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at miarchivo_fla::MainTimeline/mostrarPorcentaje()
x favor chekalo ojala me puedas ayudar...! muchas gracias de antemano\m/
Por Alfonso V el 24 de Febrero de 2011
Por LazaroAdan el 03 de Julio de 2011
pero aun asi evita que la animacion comienze hasta que se termine la carga completa, muchas gracias!!
Por nestorrente el 05 de Julio de 2011
LazaroAdan-blog :
pero aun asi evita que la animacion comienze hasta que se termine la carga completa, muchas gracias!!
Hola, LazaroAdan. Si no me equivoco, el problema que tú dices viene porque Flash no muestra el primer fotograma hasta que ha cargado unos cuantos... y por eso la precarga no se ve hasta que está casi cargado por completo.
Quizá la solución sería separar la carga y la animación en 2 archivos diferentes, pero de esa manera habría que realizar la carga de otra manera. Si alguien se anima a intentarlo, que nos lo enseñe
Por karen el 07 de Abril de 2012
Por elricho el 09 de Octubre de 2012
Por maxiron el 20 de Diciembre de 2013
gracias
Por Jerika el 17 de Diciembre de 2014