2013-08-25 41 views
-2

我试图加载和卸载许多外部swf文件到主空白swf中。并使用位于外部加载的子页面上的导航按钮(next/back)来导航(加载和卸载页面)。加载多个外部swf并使用儿童上的按钮导航

我试图从小孩派遣事件到主要卸载。它只适用于第一页,因为调度员只冒泡一次。

我必须加载默认的页面和调度听众在主SWF如下:

var cont:Sprite= new Sprite(); 

var swfLoader:Loader = new Loader(); 

var swfFile:URLRequest = new URLRequest("Page1.swf"); //default page 

addChild(cont); 

swfLoader.load(swfFile); 

cont.addChild(swfLoader); 


swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadedHandler); 

function swfLoadedHandler(event:Event):void { 

MovieClip(event.currentTarget.content).addEventListener("eventTriggered", removeLoader); 

} 


function removeLoader(event:Event):void { 

SoundMixer.stopAll(); 
this.swfLoader.unloadAndStop(); 
this.removeChild(cont); 
this.cont = null; 


swfLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, swfLoadedHandler); 

trace ("dispatched"); 

} 

而且对儿童page1.swf Next按钮的代码是follwos:

nxt_pg.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_8); 

function fl_MouseClickHandler_8(event:MouseEvent):void { 

content_mc.gotoAndStop(1); 

dispatchEvent(new Event("eventTriggered", true)); 

SoundMixer.stopAll(); 

//Code of Loading new page here 
} 

和后退按钮相同的代码。

所以,我想知道是否有人可以帮助我的代码或更好的技术..提前感谢您的帮助。

回答

0

我通过从子SWF中删除Next和Back按钮并将其放在影片剪辑的容器中并根据需要更改其可见性来解决此问题。

在索引页(page0.swf),我只是简单地设置'buttons_mc.visible = false;'并在其余页面上显示。

这里最重要的是使用'addChildAt(myLoader,0)'而不是'addChild(myLoader)'来使加载的SWF上的按钮影片剪辑。

所有这些只在容器代码上完成,不需要使用外部加载的SWF进行任何额外的编码。

下面是用于容器SWF的代码:

import flash.display.Loader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.events.MouseEvent; 

var swfNumber=0; 
var myLoader:Loader = new Loader(); 
var myRequest:URLRequest = new URLRequest("swf/"+"Page"+swfNumber+".swf"); 

buttons_mc.visible = false; 
myLoader.load(myRequest);  
addChildAt(myLoader,0);// will be added under the buttons layer 
trace(getChildIndex(myLoader)); 

//==============  

buttons_mc.nxt_pg.addEventListener(MouseEvent.CLICK, nextSwf); 
function nextSwf(event:MouseEvent){ 
    if(swfNumber<totalSwf){swfNumber++} 
    else (swfNumber=0); 
    reload(); 
    trace("Next"); 
    } 

buttons_mc.prv_pg.addEventListener(MouseEvent.CLICK, previousSwf); 
function previousSwf(event:MouseEvent){ 
    if(swfNumber>1){swfNumber--} 
    else (swfNumber=0); 
    reload(); 
    trace("Back"); 
    } 

//============== 

function reload(){ 
    if (swfNumber==0){buttons_mc.visible = false;} 
    else (buttons_mc.visible = true); 
    myLoader.unloadAndStop(); 
    removeChild(myLoader); 
    myRequest= new URLRequest("swf/"+"Page"+swfNumber+".swf"); 
    myLoader.load(myRequest); 
    addChildAt(myLoader,0); 
}