1

親にロードされた子 SWF に問題があります。読み込みはかなり基本的なもので、すべて問題ありません。問題は、子に複数のフレームがある場合、SWF が無期限にループすることです。完了すると、子には複数のフレームと進む/戻るボタンがありますが、それぞれに異なる画像があり、stop(); のコード保存がない 2 つのフレームに絞り込みました。AS2 SWF を受け入れるが、AS3 でループする、私が作成していない (そして見たくない) 別の親がいます。これは、このプロジェクト全体が発生した場所です...洞察は大歓迎です....

親のコードは次のとおりです。

var _swfLoader:Loader;
var _swfContent:MovieClip;

loadSWF("test4.swf");

function loadSWF(path:String):void {
   var _req:URLRequest = new URLRequest();
   _req.url = path;

   _swfLoader = new Loader();
   setupListeners(_swfLoader.contentLoaderInfo);

   _swfLoader.load(_req);
}

function setupListeners(dispatcher:IEventDispatcher):void {
   dispatcher.addEventListener(Event.COMPLETE, addSWF);
   dispatcher.addEventListener(ProgressEvent.PROGRESS, preloadSWF);
}

function preloadSWF(event:ProgressEvent):void {
   var _perc:int = (event.bytesLoaded / event.bytesTotal) * 100;
   // swfPreloader.percentTF.text = _perc + "%";
}

function addSWF(event:Event):void {
   event.target.removeEventListener(Event.COMPLETE, addSWF);
   event.target.removeEventListener(ProgressEvent.PROGRESS, preloadSWF);

   _swfContent = event.target.content;
   _swfContent.addEventListener("close", unloadSWF);

   addChild(_swfContent);
}

function unloadSWF(event:Event):void {
   _swfLoader.unloadAndStop();

removeChild(_swfContent);
   _swfContent = null;
}
4

1 に答える 1

1

DaveGaur はここであなたの質問に答えましたか? AS3 外部 SWF 停止

デフォルトでは、ムービークリップがステージに追加されると再生されます。MovieClip にフレームが 1 つしかない場合、見た目は変わりません。すべてのフレームと子がロードされるまで、完了イベントは呼び出されません。Dave は、最初のフレームの再生準備が整ったときに INIT イベントが呼び出されると述べました。したがって、あなたのコードについて、Dave は setupListeners の近くで次のようなことを提案したかもしれません。

dispatcher.addEventListener(Event.INIT, stopContent, false, 0, true);

function stopContent(event:Event) {
    event.target.removeEventListener(Event.INIT, stopContent);
    _swfContent = event.target.content as MovieClip;
    _swfContent.stop();
}
于 2012-08-13T02:35:27.840 に答える