Se vuoi realizzare un semplice preload su frame puoi utilizzare l'evento enterFrame, con un codice abbastanza semplice, come questo:
Codice PHP:
addEventListener (Event.ENTER_FRAME, loadingItems);
function loadingItems (e:Event):void {
var bytes_loaded = Math.round(stage.loaderInfo.bytesLoaded);
var bytes_total = Math.round(stage.loaderInfo.bytesTotal);
var getPercent = bytes_loaded/bytes_total;
trace (Math.round(getPercent*100)+"%");
if (bytes_loaded == bytes_total) {
removeEventListener (Event.ENTER_FRAME, loadingItems);
gotoAndStop (10);
}
}
stop ();
Se metti un'immagine abbastanza pesante sul secondo frame e fai un test di scaricamento da flash, vedrai il trace progressivo basato sul caricamento.
Fermo restando che sia più pulita e collimi meglio con l'uso di javascript (che serve per l'incorporamento) la possibilità di cui invece parlava Sleter e per la quale avevo sviluppato una document class da usare sul fla "caricatore" di quello priincipale.
La classe è questa, analizzandola si può notare l'uso di un Loader che carica silenziosamente il filmato principale e a fine caricamento lo "trasporta" nella timeline principale rendendolo l'unico figlio della classe Stage, come da schema di distribuzione degli elementi di visualizzazione all'interno del filmato swf (visibile sotto il codice):
Codice PHP:
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLRequest;
public class StagePreload extends Sprite {
public function StagePreload ():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init (evt:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(new URLRequest("filmato_principale.swf"));
}
private function progress (evt:ProgressEvent):void {
trace ((Math.floor((evt.bytesLoaded/evt.bytesTotal)*100))+"%");
}
private function init (evt:Event):void {
var loader:Loader = evt.target as Loader;
stage.addChildAt (loader.content, stage.numChildren-1);
stage.removeChild (this);
}
}
}