加载SWF文件并在同一窗口中关闭它

时间:2018-03-07 13:01:46

标签: actionscript-3 flash actionscript

我正在建立一个应用,用户点击按钮并在同一窗口中加载SWF文件,如果他完成,请使用关闭按钮关闭它:

First frame

2nd frame

我希望用户能够点击橙色关闭按钮,然后返回第一帧(蓝色),

我试过这个:

orangeClosingButton.addEventListener(MouseEvent.CLICK, clickHandler);
 function clickHandler(event:MouseEvent):void {
  fscommand("quit");
 }

但这关闭了整个App,我只想关闭灰色的SWF文件,然后返回主应用程序蓝色的那个,任何想法我怎么能实现这个?

2 个答案:

答案 0 :(得分:0)

为了能够完全停止和卸载加载的SWF,您需要在 Loader 实例上调用 unloadAndStop()方法,该实例保存已加载的内容。像:

var outerSwf:Loader = new Loader;

// Load.
outerSwf.load(new URLRequest("outer.swf"));
addChild(outerSwf);

// ...
// Unload.
removeChild(outerSwf);
outerSwf.unloadAndStop();

然后,如果你想从加载的内容中做到这一点。您可以订阅此方法,只需点击即可调用它。

function unloadThisSWF(e:Event = null):void
{
    // Obtain the reference to the Loader instance.
    // In AS3 root will always point to the compiled SWF
    // root, not to the topmost root attached to the Stage.
    var aLoader:Loader = root.parent as Loader;

    // Run it only if this SWF was actually loaded.
    if (aLoader)
    {
        // Detach it from display list if attached.
        if (aLoader.parent)
        {
            aLoader.parent.removeChild(aLoader);
        }

        // Invoke the unload.
        aLoader.unloadAndStop();
    }
}

答案 1 :(得分:-1)

取决于您如何加载内部SWF。假设这是ActionScript2,并且此代码位于已加载的影片(灰色代码)中,则此类代码可能有效:

orangeClosingButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
  // remove the event listener so the loaded movie can be garbage collected
  orangeClosingButton.removeEventListener(MouseEvent.CLICK, clickHandler);
  unloadMovie(this);
}

不确定你是否可以从内部swf卸载电影,也许这个unloadMovie()也必须在你加载电影的主SWF中。

如果这是AS3,你应该使用removeChild(yourMovieClip)而不是unloadMovie