Algún día tenía que llegar y aquí está: El tutorial del preload en Actionscript 3...
El ejemplo que les mostraré será de como añadir un preload al _root de la película principal.
Recuerda que tambien hay un preloader en Flash del normal, por si aún no te pasas a AS3.
Para este tutorial debes haber visto el tutorial basico de Actionscript 3.
Empezaremos creando una clase que llamaremos "PreloadBasico.as", que guardaremos dentro de la carpeta "preloads", que a su vez estará dentro de nuestra carpeta de clases AS3.
Una vez creado el archivo .as abriremos el panel de propiedades de publicación (CTRL+SHIFT+12), y en opciones de actionscript 3 le asignaremos la clase al documento.
En el .FLA montaremos una pelicula con dos fotogramas. El primer fotograma lo dejaremos vacío y solo colocaremos un stop(). En el segundo colocaremos todo el contenido.
Escribiremos la clase "PreloadBasico.as":
Código :
package preloads
{
public class PreloadBasico extends MovieClip
{
public function PreloadBasico ()
{
}
}
}Como podemos ver, hemos de extender esta clase de la clase MovieClip.
Importamos las clases que utilizaremos:
Código :
import flash.display.Stage; import flash.display.MovieClip; import flash.display.Shape; import flash.text.TextField; import flash.events.*
Crearemos el preload. Necesitaremos crear un textField para el texto, un shape para la caja y otro shape para el color del relleno.
Código :
public class PreloadBasico extends MovieClip
{
private var texto:TextField;
private var marco:Shape;
private var barra:Shape;
//----------------------------------------
public function PreloadBasico ()
{
dibujaPreload();
posicionaPreload();
}
//----------------------------------------
public function dibujaPreload() {
texto = new TextField();
marco = new Shape();
barra = new Shape();
marco.graphics.lineStyle(1, 0x000000);
marco.graphics.drawRoundRect(0, 20, 70, 5, 0);
barra.graphics.beginFill(0x000000);
barra.graphics.drawRect(0, 20, 70, 5);
barra.graphics.endFill();
addChild(texto);
addChild(marco);
addChild(barra);
}
//----------------------------------------
public function posicionaPreload() {
texto.x = marco.x = barra.x = stage.stageWidth /2 - marco.width /2
texto.y = stage.stageHeight /2 - texto.height /2
marco.y = barra.y = texto.y + 5
}
}La función dibujaPreload() es la que genera los clips y la función posicionaPreload() los coloca en el centro de la pelicula. Para este ejemplo hemos hecho un preload muy simple, únicamente un texto que nos mostrará el porcentaje cargado y una barrita que se va ampliando.

Aqui cada cuál puede editar estas funciones para conseguir el preload que gráficamente más le convenga.
Añadiremos los detectores de eventos y sus funciones:
Código :
public function PreloadBasico ()
{
dibujaPreload();
posicionaPreload();
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
this.loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
//----------------------------------------
function onLoadProgress (event:ProgressEvent):void
{
var cargado:int = event.bytesLoaded;
var total:int = event.bytesTotal;
var porcentaje:int = cargado/total*100;
texto.text = "Cargado: "+String(porcentaje)+"%";
barra.width = porcentaje*marco.width/100;
}
//----------------------------------------
function onLoadComplete (event:Event):void
{
removeChild(texto);
removeChild(marco);
removeChild(barra);
nextFrame();
}
}La función onLoadProgress() calcula el porcentajecargado y actualiza los clips del preload.
La función onLoadComplete() se ejecuta cuando la carga de la pelicula está completa, elimina los objetos del preload y manda la pelicula al segundo fotograma (donde está el contenido)
Código completo.
Ejemplo.

Por MorphX el 06 de Noviembre de 2006
De seguro muchos lo incluirán del tirón en sus proyectos....
Por daidalos el 06 de Noviembre de 2006
(emote de diseñador a punto de ataque de pánico)
daidalos_blog :
O quizas:
Por Hector el 06 de Noviembre de 2006
<blockquote>Menopause Vagina Relief
Europe's leading menopause product change your menopause-not your life</blockquote>
Hector_blog :
Europe's leading menopause product change your menopause-not your life
Por Lunatic el 06 de Noviembre de 2006
Genial forma de comenzar a usar el as3.
PD: Que pena que aún tengo que empezar a verlo
Por noctam el 07 de Noviembre de 2006
Código :
y con esto:
Código :
y otra cosilla,
porque creas los objetos de texto, marco y barra al principio y las instancias en otra parte del codigo, es que ya no se puede hacer todo a la vez?
o es para mejorar la legibilidad del codigo solamente?
a ver si me lo aclarais
asias majetes^^
noctam_blog :
addchild sustituye a attachMovie
el-reemplazo-a-attachmovie-en-actionscript-3
noctam_blog :
Esto es para detectar los eventos
actionscript-3.0-parte-2-botones-eventos-geturl-y-enlaces
noctam_blog :
Porque es una clase
introduccion-basica-a-actionscript-3-clases-tipos-de-datos
Por Karloz el 08 de Noviembre de 2006
Por darasta el 27 de Febrero de 2007
Muchas gracias !!! excelente foro ....
darasta_blog :
Muchas gracias !!! excelente foro ....
Aqui hay otro tuto para preload de archivos externos en AS3. Espero que te sirva
Por MostPEpe el 04 de Junio de 2007
Por gera el 11 de Septiembre de 2007
Por Neftati el 12 de Octubre de 2007
alguien me puede desir donde esplican bien y detallado como en lasar la pelicula con la clase, es que me dise que no la encuentra y esta ay?
al prubar la precarga perfecto pero si le doy a actualisar en el navegador se queda al 100% y no pasa al ultimo fotograma.
Gracias
quiero ver el ejemplo Sr. Zguilleeeeeeeeeeezzzzzzzzz
Neftati_blog :
Neftati_blog :
alguien me puede desir donde esplican bien y detallado como en lasar la pelicula con la clase, es que me dise que no la encuentra y esta ay?
al prubar la precarga perfecto pero si le doy a actualisar en el navegador se queda al 100% y no pasa al ultimo fotograma.
Gracias
Personita de mi alma:
- decir con C.
- explican con X.
- Enlazar todo junto y con Z.
- La tilde en pelicula te la perdono.
- Dice con C.
- "... esta ahi" ... Ahi de señalar un lugar se escribe AHI y con tilde en la i, solo que mi teclado no anda.
- Actualizar con Z.
Por Marcelo.. el 09 de Noviembre de 2007
Por anónimo el 12 de Noviembre de 2007
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at preloads::PreloadBasico/posicionaPreload()
at preloads::PreloadBasico$iinit()
Con hacer esto es suficiente: var preload:PreloadBasico = new PreloadBasico();
Por gonzalo el 26 de Noviembre de 2007
por ejempplo, tengo un "estado" al cual le asigne la clase "cestado", la cual extiende "PreloadBasico", tiene un frame "limpio" al comienzo con el "stop", y todo anda al lope, aurora bien, cuando lo uso de la siguiente forma, el objeto no me anda (si el preloader), es un cuadro donde se muestran varios estados (ej. un personaje), y no puedo acceder a "las cosas de adentro", es decir TextField's y otros chucos.. si le saco el frame al comienzo, anda perfecto, pero no el preloader.
ah.. va el ejemplo:
var miestado= new Loader();
miestado.load(new URLRequest(la_uri));
miestado.contentLoaderInfo.addEventListener(Event.COMPLETE, evento_estado_cargado);
addChild(miestado);
luego de lanzar `evento_estado_cargado`, se detiene la ejecucion y no hace mas nada..
se que es un post algo viejo, pero si alguien tiene alguna idea.. agradezco.. saludos y buen tip !
Por Pau el 18 de Enero de 2008
Por Miguel Angel el 28 de Marzo de 2008
Por Miguel Angel el 29 de Marzo de 2008
Agradecería mucho si alguien me puede ayudar
Gracias por su atención.
Por Miguel Angel el 29 de Marzo de 2008
Y las ligas del codigo completo y para descargar el fla no funcionan.
Ayuuundeeenmeeeeeeeeee.
Gracias.
Por marlo el 23 de Abril de 2008
The requested URL /Preload/AS3/01/Preloader.htm was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Not Found
The requested URL /Preload/AS3/01/PreloadBasico.as.txt was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Por no se encuentran los el 08 de Junio de 2008
Gracias
Por Fer el 11 de Agosto de 2008
Por Erik Moreno el 04 de Septiembre de 2008
Por oscarlosan el 18 de Septiembre de 2008
Por pep el 20 de Octubre de 2008
Me funciona bien hasta que ha cargado el swf es decir: me muestra la barra de progreso hasta el 100%, pero no llega a entrar a la función onLoaded().Debugando he visto que en vez de esto vuelve a empezar la función main y peta al entrar por segunda vez en posicionaPreload().
Me sale el siguiente error:
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at classes::main/::initStage()
at classes::main/::init()
Alguien podría ayudarme? Llevo dias con esto.
(por cierto el swf es as3)
Gracias!
Por xFierceDeityx el 29 de Diciembre de 2008
Por klaudi el 20 de Enero de 2009
Por bribon el 06 de Febrero de 2009
Estoy desarrollando un pagina con flash CS3. He probado tu preloader y alguno más, y todos funcionan bien localmente, pero si los subo al servidor no funciona. He echo la carga desde la linea de tiempo principal, donde el frame 2 tengo un solo movieClip que contiene toda la web. También, he probado a cargar la web desde un .swf externo, y tampoco me funciona.
¿Cual puede ser el problema?
Un saludo
Por luis el 13 de Febrero de 2009
Por Dureitor el 02 de Mayo de 2009
Dureitor-blog :
Pues no...
Evidentemente es un código simplificado que será parecido a todos que publiquen un ejemplo de preload simplificado..
Por Willfrom el 11 de Mayo de 2009
- No precarga, no realiza los listeners de loading y complete.
- Si consigo que cargue, después de limpiar la caché del navegador, cuando pulso F5 para actualizar se queda en standby.
¿Alquien tiene una solución para este problema?
Por Gargamelle el 24 de Mayo de 2009
Por cesar el 28 de Junio de 2009
Por darox el 12 de Noviembre de 2009
Por darox el 12 de Noviembre de 2009
Por martha el 22 de Noviembre de 2009
estoy haciendo un juego en flash y necesito poner una pista (cancion) y que eso sea el tiempo que el preload tarde en cargarse.
Por omg el 22 de Noviembre de 2009
estoy haciendo un juego en flash y necesito poner una pista (cancion) y que eso sea el tiempo que el preload tarde en cargarse.
Por MiguelON el 08 de Diciembre de 2009
Por MiguelOn el 12 de Diciembre de 2009
Por kabuto el 19 de Diciembre de 2009
Codigo en Frame1:
this.stop();
txtCargador.text="espere por favor";
addEventListener(Event.ENTER_FRAME, loadProgress);
function loadProgress(event:Event)
{
// get bytes loaded and bytes total
var movieBytesLoaded:int = this.root.loaderInfo.bytesLoaded;
var movieBytesTotal:int = this.root.loaderInfo.bytesTotal;
// convert to KiloBytes
var movieKLoaded:int = movieBytesLoaded/1024;
var movieKTotal:int = movieBytesTotal/1024;
// show progress
txtCargador.text = "Loading: "+ movieKLoaded + "K/"+ movieKTotal + "K";
// move on if done
if (movieBytesLoaded >= movieBytesTotal) {
removeEventListener(Event.ENTER_FRAME, loadProgress);
gotoAndStop("Contenido");
}
}
El contenido lo publicamos a partir del Frame 2.
¿que opinan de ello?
Por Hard el 27 de Enero de 2010
puse un Play(); y listo
Gracias
Por atonab el 30 de Enero de 2010
Por underworlddv el 03 de Marzo de 2010
Por traza el 22 de Marzo de 2010
Por felipe el 13 de Mayo de 2010
Por balkar el 03 de Junio de 2010
Una dudilla solamente, que modificaciones habría que realizar en el codigo si quiero cargar cuatro documentos XML y construir cuatro clases a partir de ellos, que se utilizaran posteriormente, en este preloader antes de pasar al frame 2?
Por juancube el 29 de Julio de 2010
Por Aiapaec el 17 de Noviembre de 2010
Por Viktor el 02 de Marzo de 2011
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
bueno este primero viene por lo de stage, lo que ago es paso stage al objeto y lo guardo en una variable y despues llamo al stage.stageWidth ...
Segundo al solucionar esto me tira mismo error pero ya provienen desde funccion de creaccion de clase :
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at src.preloads::PreloadBasico()
at Main()
Y aqui me pierdo , porque no veo que objeto a sido el que puede ser nulo,
la otra cosa tambien es que bueno concegui solucionar este error sacando funcciones onLoadProgres y la otra fuera del metodo de iniciacion,
i boorre la elimiacio de dubujos al acavar pero en la pantalla no me aparece nada,
bueno entonces dije voy a ver ejemplo que pone al final de la paguina y links no funccionan
bueno intente dibujar desde classe otra figura que no es preload, y tampoco me aparece.
Pregunta: como dibujar objetos desde otra clase que no sea principal, y del otro paquete? y como acer funccionar el codigo que tienes aqui que a mi no me furula, problemas expuestos mas arriva
Por Viktor del anuncio m el 02 de Marzo de 2011
Por diego el 11 de Marzo de 2011
Por Pamela el 07 de Abril de 2011