0

これまでのところ、外部SWFファイルをロードできる単純なテキストベースのプリローダーを構築することができました。ビルド済みのSWFがたくさんあるので、それらを外部にロードするのが最善のオプションのようです。プリローダーを機能させることができましたが、イベントが完了したら、イベントリスナーとローダーの子を削除したいと思います。誰かが私のコードを見て、私が間違ったことを説明してもらえますか?

どうもありがとうございます、

ルーク

var req:URLRequest = new URLRequest("gallery.swf");
var loader:Loader = new Loader();
var finishLoading:Loader = new Loader();

finishLoading.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, done);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preload);
loader.load(req);

function fileLoaded(event:Event):void
{
        addChild(loader);
}

function preload(event:ProgressEvent):void
{
    var percent:Number = Math.round(event.bytesLoaded / event.bytesTotal * 100);           //this gives a percent of how much data has been loaded
    preload_txt.text = String(percent) + "%";
}

function done(event:ProgressEvent):void
{
    if(event.bytesLoaded >= event.bytesTotal){
        removeChild(loader); 
        loader = null;

        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fileLoaded);
        loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, preload);
    }

 }
4

1 に答える 1

1

イベントリスナーを削除する前にローダーをガベージコレクションしました。それを元に戻します。

if(event.bytesLoaded >= event.bytesTotal){
  loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fileLoaded);
  loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, preload);
  removeChild(loader); 
  loader = null;
}
于 2012-08-02T11:04:36.827 に答える