卸载一个swf文件并在as3中加载另一个swf文件



我想卸载以前加载的swf文件(welcome.swf),并在用户单击位于第一个加载的swf文件(I .swf)内的按钮时加载另一个swf文件(topics.swf)。(按钮,嵌套在要卸载的欢迎SWF文件中)。我已经尝试了各种各样的代码,但似乎没有工作,我在我的智慧结束。请有人帮忙。提前感谢。下面是我的主文件和要卸载的外部swf中的代码。

主文件

var box:Sprite = new Sprite;
box.x = 0;
box.y = 0;
addChild(box);
var loader = new Loader();
var swfURLReq:URLRequest = new URLRequest("welcome.swf");
loader.load(swfURLReq);
box.addChild(loader);

外部swf文件

var loader = new Loader();`
button_1.addEventListener(MouseEvent.CLICK, button4);
function button4(event:MouseEvent) {
    loader.unloadAndStop();
    loader=null;
    var SWFRequest:URLRequest = new URLRequest("Topics.swf");
    loader.load(SWFRequest);
    loader.x = 0;
    loader.y = 0; 
    addChild(loader);
}

我认为你应该在Main Loader加载topics.swf。所以你应该从welcome.swf.

中访问Main Loader。

这段代码不能工作吗?

外部swf文件

button_1.addEventListener(MouseEvent.CLICK, button4);
function button4(event:MouseEvent) {
    var target: Object = this;
    // Search the Main Loader from child swf.
    while (target.parent){
        target = target.parent;
        if (target is Loader){
            var loader:Loader = target as Loader;
            var SWFRequest:URLRequest = new URLRequest("Topics.swf");
            loader.load(SWFRequest);
            break;
        }       
    }
}

我可能会将所有的加载/卸载责任移动到主文件中,内部swf只是让主知道一些事件通过loaderInfo.sharedEvents,就像这样:

主要文件:

var box:Sprite = new Sprite;
box.x = 0;
box.y = 0;
addChild(box);
var loader = new Loader();
var swfURLReq:URLRequest = new URLRequest("welcome.swf");
loader.load(swfURLReq);
function topicsRequestedHandler(event:Event):void {
    loader.contentLoaderInfo.sharedEvents.removeEventListener(
        "loadTopics", topicsRequestedHandler);
    loader.unloadAndStop();
    //load "Topics.swf" here
}   
loader.contentLoaderInfo.sharedEvents.addEventListener(
    "loadTopics", topicsRequestedHandler);
box.addChild(loader);

和外部文件:

button_1.addEventListener(MouseEvent.CLICK, button4);
function button4(event:MouseEvent) {
    loaderInfo.sharedEvents.dispatchEvent(new Event("loadTopics"));
}

(未测试但应该可以工作)

对于所有加载的文件使用此方案,您将在一个地方保持加载/卸载管理

最新更新