0

外部 SWF をメイン フレーム (URL 要求) にロードしています。SWF が最終フレームに到達したら、それ自体を UNLOAD する必要があります。これは iOS アプリケーション用であるため、CHILD swf のコードを使用せずにこれを行う必要があります。誰でも助けることができますか?

//start button

start_button_aboriginal.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_3);

import fl.display.ProLoader;
var fl_ProLoader_3:ProLoader;

//This variable keeps track of whether you want to load or unload the SWF
var fl_ToLoad_3:Boolean = true;

function fl_ClickToLoadUnloadSWF_3(event:MouseEvent):void
{
if(fl_ToLoad_3)
{
    fl_ProLoader_3 = new ProLoader();
    fl_ProLoader_3.load(new URLRequest("myths/myth_aboriginal.swf"));
    addChild(fl_ProLoader_3);
    fl_ProLoader_3.x = 114;
    fl_ProLoader_3.y = 41;
}
else
{
    fl_ProLoader_3.unload();
    removeChild(fl_ProLoader_3);
    fl_ProLoader_3 = null;
}
// Toggle whether you want to load or unload the SWF
fl_ToLoad_3 = !fl_ToLoad_3;

//here, I want to UNLOAD the external SWF when it is finished playing.

var totFrames:Number=childMC.totalFrames;
var curFrame:Number;

childMC.addEventListener(Event.ENTER_FRAME, remove);

    function remove(evt:Event):void {
    curFrame=childMC.currentFrame;
    if (totFrames==curFrame) {
        removeChild(childMC);
    }
}
4

1 に答える 1

0

グローバル スコープで childMC を宣言し、ローダー コンテンツを割り当てる必要があります。関数内で関数を宣言しないでください!!

このようなものNOT TESTET

import fl.display.Loader; // impoerts belong at the top

var fl_ProLoader_3:ProLoader; // then your global vars
var childMC:MovieClip; // instatiate childMC with global scope

start_button_aboriginal.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_3,false,0,false); // listener with weak refference

var fl_ToLoad_3:Boolean = true;

function fl_ClickToLoadUnloadSWF_3(event:MouseEvent):void
{
if(fl_ToLoad_3)
{
    fl_ProLoader_3 = new Loader();
    var url:URLRequest = new URLRequest("myths/myth_aboriginal.swf"); 
    var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); // IOS needs this
        fl_ProLoader_3.load(url, loaderContext);
    fl_ProLoader_3.addEventListener(Event.COMPLETE, loadCompleteHandler,false,0,false);

}
else
{
    if(childMC){
            removeChild(childMC);
            childMC.unloadAndStop();
            childMC = null; 
    }

}
// Toggle whether you want to load or unload the SWF
fl_ToLoad_3 = !fl_ToLoad_3;

}
function loadCompleteHandler(evt:Event):void
{
        childMC = evt.target.content as MovieClip;
        childMC.addEventListener(Event.ENTER_FRAME, remove);
        addChild(childMC);
        childMC.x = 114;
        childMC.y = 41;
}

function remove(evt:Event):void {
    var totFrames:Number=childMC.totalFrames;
    var curFrame:Number =childMC.currentFrame;;

    if (totFrames==curFrame) {
      childMC.removeEventListener(Event.ENTER_FRAME, remove);
      removeChild(childMC);
      childMC.unloadAndStop();
      childMC = null;
  }
}
于 2013-03-29T09:53:12.100 に答える