加载多个外部swf并使用child上的按钮进行导航

时间:2013-08-25 23:38:32

标签: actionscript-3 flash

我正在尝试将许多外部swf文件加载和卸载到主空白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上的下一个按钮代码如下:

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
}

后退按钮的代码相同。

所以,我想知道是否有人可以帮助我使用代码或更好的技术。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

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

在索引页面(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);
}