相关代码如下
<mx:SWFLoader id="swfLoader" source="[加载的swf文件]" complete="swfComplete(event)" />
private var swfObj:Object;
private function swfComplete(evt:Event):void{
//对swfObj赋值,通过操作swfObj来控制加载的swf文件;
swfObj = SWFLoader(evt.target).content;
}
第二类: Flex中操作 mxml格式生成的 swf;
<mx:SWFLoader id="swfLoader" source="[加载的swf文件]" complete="swfComplete(event)" updateComplete="swfUpdateCom(event)" />
private var swfObj:Object;
private var swfSM:SystemManager;
private function swfComplete(evt:Event):void{
swfSM = SystemManager(SWFLoader(evt.target.content));
//在这里不能直接对 swfObj进行赋值,因为此时 swfSM.application 的值为 null;
}
private function swfUpdateCom(evt:Event):void{
//对swfObj赋值,通过操作swfObj来控制加载的swf文件;
if(swfSM!=null && swfObj==null){
swfObj = swfSM.application;
}
//假如要在子swf中调用主swf函数需要在 子swf中设置一个Object类型的变量,给此变量赋值
if(swfObj!=null){
// _parentObj 是子swf中变量,可以通过它来调用主swf属性及函数;
swfObj._parentObj = this;
}
}
操作加载swf文件的前提:知道swf文件内的公有属性和方法名;
Flex中使用Flash类库中的元件
private var swfUrl=""; //库资源地址
private var ui:UIComponent = new UIComponent();
private var loader:Loader = new Loader();
private var context:LoaderContext = new LoaderContext();
private function init():void{
//指定为当前域;
context.applicationDomain=ApplicationDomain.currentDomain;
//加载外部的swf库 loader.load()中的第2个参数 用来确定是否能使用加载的SWF中的库;
loader.load(new URLRequest(swfurl), context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(evt:Event):void{
//得到类
var classByName:Class = ApplicationDomain.currentDomain.getDefinition("元件名" ) as Class;
var mc:MovieClip = new classByName(); //从库中导出资源
mc.x = 300;
mc.y = 300;
//添加到场景中;
ui.addChild(mc);
this.addChild(ui);
}
在加载 swf 过程中 会出现 内存泄露的情况;
解决方法:
swfLoader.unloadAndStop(); //加载前先卸载;
System.gc(); //调用垃圾回收方法;
如有不当之处请批评指正。
转载自:http://greenexe.javaeye.com%2Fblog%2F911299
相关推荐
这篇文章将深入探讨关于使用Flex和Flash生成SWF文件时所遇到的加载(体积)问题。SWF是Adobe Flash Player用于播放多媒体内容的文件格式,它包含了动画、交互式图形以及声音等多种元素。 首先,我们需要理解Flex和...
在Flex应用中,我们经常需要动态加载外部的SWF文件,以实现模块化设计或者扩展功能。加载SWF文件的核心在于使用`Loader`类,它是AS3中的一个核心组件,负责加载各种类型的媒体资源,包括SWF文件。 以下是一段基本的...
要在Flex项目中嵌入SWF文件,我们需要使用`mx.controls.VideoDisplay`或`mx.core.MovieClip`组件。例如: ```xml <mx:MovieClip id="swfPlayer" source="@Embed('path/to/your.swf')"/> ``` 2. **访问SWF的...
本文将详细解析如何在JSP页面中嵌套使用Flex生成的SWF文件来创建自定义的系统拓扑图。 首先,Flex是一种基于ActionScript的开放源代码框架,用于构建具有交互性和动态效果的RIA。它允许开发者创建美观且功能丰富的...
本文将深入探讨如何在Flex中实现对引入SWF文件播放进度的控制。 首先,我们要明白Flex是Adobe推出的一种开源的、基于ActionScript 3.0的富互联网应用程序(RIA)框架。它允许开发者构建跨平台的桌面和移动应用程序...
5. **编译和运行项目**: 使用Maven的`mvn compile`命令,插件会自动调用Flex SDK的编译器将源代码编译为SWF文件。如果配置正确,生成的SWF文件应该位于`target`目录下。 6. **测试和部署**: Maven还可以帮助你执行...
至于“swfweb”这个文件名,可能是压缩包中的一个相关文件,它可能是一个SWF文件,即Flash Player可执行的内容,用于在浏览器中展示Flex应用程序。在多文件上传的场景下,这个SWF文件可能包含了Flex编译后的用户界面...
描述中提到的“实现FLEX的效果展示”,意味着这些SWF文件是为了演示Flex如何实现各种动态效果和视觉增强功能。通过这些文件,开发者可以观察并学习如何应用不同的Filter(滤镜)效果,以改变UI元素的外观。滤镜是...
Flex使用MXML和ActionScript来创建用户界面,编译后的结果就是SWF文件,可以在各种浏览器和操作系统上运行,无需安装额外插件。 `swf-file-format-spec.pdf` 这份文档可能涵盖了以下关键知识点: 1. **文件结构**...
在本文中,我们将深入探讨如何在Flex应用中调用SWF文件,并将其转换为特定的对象,而不仅仅是作为MovieClip处理。在Flex开发中,我们经常需要集成外部的SWF资源,例如库或自定义组件,这通常是通过ActionScript实现...
这些函数可以让运行在网络沙箱中的SWF放宽对特定域的权限,从而允许加载来自该域的SWF文件。但需要注意的是,这种方法可能会降低安全性,因此应谨慎使用。 在标签“源码”中,我们可以查看到`LoadEmbedFont.as`文件...
发布Flex应用通常涉及SWF文件的生成和服务器配置。SWF是Flex应用的运行形式,可以通过Flex Builder或其他构建工具生成。发布时还需要考虑跨浏览器兼容性和安全性问题。 总的来说,Flex中文帮助文件是学习和掌握...
本教程将重点讲解如何在Flash中加载SWF文件,这是一项关键的技术,能够帮助开发者实现课件之间的交互性和资源共享。下面将详细阐述这一过程。 首先,SWF全称为"Small Web Format",是Adobe Flash的文件格式,用于在...
由于SWF文件是可执行的二进制文件,它们可以被反编译工具解析,从而暴露源代码,这可能对软件的知识产权构成威胁。因此,“swf二进制封装加密防止反编译”是开发者们关注的重要话题,以保护他们的劳动成果不被轻易...
3. `FileUpload.html`:这是Flex应用程序的HTML容器,可能包含了嵌入Flex SWF文件的代码,使得用户可以在浏览器中运行Flex应用。 4. `AC_OETags.js`:Adobe Flash Player的外部接口(External Interface)支持文件,...
在“bin-debug”目录下,通常包含编译后的SWF文件以及可能的资源文件,这些是Flex应用的运行版本。而“src”目录则包含了源代码,包括ActionScript类文件和可能的MXML布局文件。在这里,你可以找到实现多文件上传...
5. 发布:编译并发布SWF文件,部署到Web服务器或作为桌面应用。 八、Flex的优势 1. 跨平台:Flex应用可以在运行Flash Player或Adobe AIR的多种操作系统和浏览器上运行。 2. 高度交互:提供丰富的用户体验,包括动态...
5. **操作系统差异**:不同的操作系统(如Windows、Mac OS)可能对SWF文件的支持程度不同,或者需要特定的软件才能播放。确保目标系统支持SWF格式是解决问题的一部分。 6. **调试工具**:压缩包中的"flashplayer_10...