2013-03-28 44 views
0

我有一个外部swf加载到主框架(URL请求),当swf到达它的最后一帧时,我需要它卸载它自己。我需要在CHILD swf上没有任何代码的情况下执行此操作,因为这是针对iOS应用程序的。谁能帮忙?当它到达最后一帧时从主屏幕卸载外部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); 
    } 
} 
+0

首先,你可以到你的其他类似qustion反应HTTP://stackoverflow.com/questions/15677907/action-script-3-0-issue- my-swf-not-unloading/15678538#15678538 然后你可以告诉我们什么在代码中不起作用!发生了什么?任何错误消息? – M4tchB0X3r 2013-03-28 11:31:57

+0

并且你有一个函数内部的函数。写第二个外面 – M4tchB0X3r 2013-03-28 11:38:52

+0

谢谢你的回答!他们是两个不同的问题 - 我得到的错误与childMC有关;似乎我没有定义它。但我正在加载外部swf,而不是可以命名的库项目。 – 2013-03-29 08:51:26

回答

0

您需要在全局范围内声明childMC并指定加载程序内容。 并且不声明函数内的函数!

像这样不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; 
    } 
} 
+0

哦,这是 - 我收到以下错误: “场景1,图层'操作',第10帧,第94行\t 1013:私有属性只能用于类属性定义。 – 2013-03-29 11:59:14

+0

我的不好。它的习惯,我不会在时间轴上编码!从loadCompleteHandler函数中删除“private” – M4tchB0X3r 2013-03-29 12:05:42

+0

现在我得到这个: “场景1,图层'操作',第60帧,第60行\t 1172:定义fl.display:Loader找不到。 – 2013-03-29 12:37:54