我正在建立一个应用,用户点击按钮并在同一窗口中加载SWF文件,如果他完成,请使用关闭按钮关闭它:
我希望用户能够点击橙色关闭按钮,然后返回第一帧(蓝色),
我试过这个:
orangeClosingButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
fscommand("quit");
}
但这关闭了整个App,我只想关闭灰色的SWF文件,然后返回主应用程序蓝色的那个,任何想法我怎么能实现这个?
答案 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