Precarga en flash desde el inicio
El otro día comenté mis serios problemas con la precarga de un Flash plagado de fuentes y componentes. El problema principal consiste en que Flash exporta todos estos elementos en su primer fotograma. La primera solución podría pasar por evitar esta carga en el primer fotograma (algo que puede hacerse desde la librería).

Aún así, es fácil que nuestro primer fotograma siga más cargado de lo que queremos (fuentes incrustradas desde la herramienta, código, etc.), así que, para aligerar esa carga, y mostrar la información de precarga desde el primer momento (desde el 0%), he decidido usar una primera película que sólo tiene el código necesario para mostrar la precarga de la película principal.
Código de la pelicula inicial:
MovieClip.prototype.loadFile = function (url, method) {
// create tmp movie clips
this.createEmptyMovieClip("tmpmc_loadfile", -474747);
this.tmpmc_loadfile.createEmptyMovieClip("loadTarget", 0);
// hide tmp movie clips and start loading file into target
this.tmpmc_loadfile._visible = false;
this.tmpmc_loadfile.loadTarget.loadMovie(url, method);
// send onData event while downloading, otherwise load
// the cached content into the original movie clip
this.tmpmc_loadfile.onEnterFrame = function () {
var percentLoaded = Math.round((this.loadTarget.getBytesLoaded()/
this.loadTarget.getBytesTotal())*100);
this._parent.onData(isNaN(percentLoaded) ? 0 : percentLoaded);
if (percentLoaded == 100) {
this._parent.loadMovie(url, method);
this.removeMovieClip();
}
}
};
raiz = _root;
raiz.loadFile("principal.swf");
raiz.onData = function(percentLoaded){
this.cargando.text = "Cargando... ("+percentLoaded+"%)";
}
El prototipo, sacado de proto.layer51.com, crea un movie clip temporal invisible para cargar la película principal con la función loadMovie, y va calculando con el evento onEnterFrame el porcentaje de carga, que devuelve al evento onData.
Cuando la carga termina, vuelve a llamar a la función loadMovie, pero desde el movie clip que lo llamó (en nuestro caso, el raiz), con lo que la película principal se carga a nivel 0 (_root), tal y como necesitábamos para que se comporte correctamente.
Ver ejemplo (que, evidentemente, requiere Flash).
El problema que tiene este método es que no puede previsualizarse desde el entorno de desarrollo de Flash, ya que la simulación de descarga (la misma que toni lópez nos comenta) sólo funciona con la película principal, y es necesario subir los ficheros a un servidor para comprobar que la descarga va bien.
Sin embargo, en Flash MX 2004 sí funciona.
Actualización: en INNOCUO han colgado un código muy útil (y curioso) para simular las descargas de películas externas en Flash MX: .














