Skip to main content
 首页 » 教程资源 » FLASH专题

FLASH课件制作技术精粹:加载与移除SWF方法

2013年12月03日7821百度已收录

问题描述:为了提高课件的制作效率,我们经常将课件的各知识或功能制作成独立的SWF,然后再需要的时候加载,不需要的移除。

问题解决:通过AS3中的loader对象可以实现对加载内容的管理,通过addChild和removeChild实现SWF文件的加载与显示,但此问题的难点在于关闭或移除按钮并不在容器的SWF文件呢,所以必须解决加载后SWF对象的路径问题:

this.parent 指当前对象上一级容器,如果当前对象直接在舞台上,其在当前SWF文件中即为舞台

this.parent.parent 指当前对象上一级容器,如果当前对象直接在舞台上,其并不存在,运行会显示错误

如果此SWF被加载后:this.parent.parent则指加载了它的loader对象

下面以一个示例说明。

解决过程:

1,在容器SWF文件中加载需要加载的对象:

var loader:Loader = new Loader();
loader.load(new URLRequest("移除自身.swf"));
picture_btn.addEventListener(MouseEvent.CLICK, showPicture);
function showPicture(event:MouseEvent):void
{
    addChild(loader);
}

2,在被加载的SWF文件中添加移除功能的代码:

close_btn.addEventListener(MouseEvent.CLICK, closeWindow);
function closeWindow(event:MouseEvent):void
{

    //this.parent=自身的这个SWF舞台
    //this.parent.parent=加载了它的容器
    trace(this.parent);
    trace(this.parent.parent);
    this.parent.parent.removeChild(this.parent);
}

picture_btn和close_btn分别为按钮的实例名称

案例下载:单击下载更多案例下载

评论列表1条评论
szichuan
szichuan回复 你所说的这种方法更有效,而且比reMoveChild()高效,感谢!
unloadAndStop
unloadAndStop回复 "但此问题的难点在于关闭或移除按钮并不在容器的SWF文件呢"
为啥就不能在容器SWF文件中添加close_btn?不能用flash.display
Loader.unloadAndStop() ?
szichuan
szichuan回复 你所说的这种方法更有效,而且比reMoveChild()高效,感谢!
发表评论
新浪微博
微信
联系电话:
13955453231