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

时间:2015-10-14 04:13:00

标签: actionscript-3

我想卸载以前加载的swf文件(welcome.swf)并在用户单击位于第一个加载的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);

}

2 个答案:

答案 0 :(得分:0)

我认为您应该在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;
        }       
    }
}

答案 1 :(得分:0)

我可能会在主文件中移动所有加载/卸载责任,内部swf让主要人员通过public class DataController { public Observable<Item> fetchData() { Observable<Item> fromCache = // creates the observable reading from cache Observable<Item> fromNetwork = //creates the observable reading from network return Observable.concat(fromCache, fromNetwork); } } 了解一些事件,如下所示:

主文件:

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);

(未经测试但应该有效)

因此,对所有加载的文件使用此方案,您将在一个地方继续加载/卸载管理。