2013-08-25 25 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); 
}