Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在as3中卸载一个swf文件并加载另一个swf文件_Actionscript 3 - Fatal编程技术网

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

Actionscript 3 在as3中卸载一个swf文件并加载另一个swf文件,actionscript-3,Actionscript 3,当用户单击位于第一个加载的swf文件内的按钮(即嵌套在要卸载的欢迎swf文件内的按钮)时,我希望卸载先前加载的swf文件(welcome.swf)并加载另一个swf文件(topics.swf).我已经尝试了所有的代码,但似乎都没有工作,我束手无策。请有人帮助。提前谢谢。下面是我的主文件中的代码和要卸载的外部swf 主文件 var box:Sprite = new Sprite; box.x = 0; box.y = 0; addChild(box); var loader = new Loade

当用户单击位于第一个加载的swf文件内的按钮(即嵌套在要卸载的欢迎swf文件内的按钮)时,我希望卸载先前加载的swf文件(welcome.swf)并加载另一个swf文件(topics.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);
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);

}
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文件

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

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

我认为您应该在主加载程序中加载topics.swf。 因此,您应该从welcome.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);
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);

}
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"));
}
(未测试,但应能正常工作)

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