在Flex中可以通过Loader和SWFLoader来进行swf和图像文件的加载。但是两者又有一些不同。
1. Loader继承自Loader->DisplayObjectContainer-> InteractiveObject ->DisplayObject,但Loader 类会覆盖其继承的以下方法,因为 Loader 对象只能有一个子显示对象 - 其加载的显示对象。调用以下方法将引发异常:addChild()、addChildAt()、removeChild()、removeChildAt() 和 setChildIndex()。要删除被加载的显示对象,必须从其父 DisplayObjectContainer 子级数组中删除 Loader 对象。
SWFLoader继承自SWFLoader ->UIComponent ->FlexSprite ->Sprite ->DisplayObject,所以SWFLoader其实相当于一个容器,可以放置除加载资源的其他组件,而且你还可以删除加载资源。
2.Loader记载的资源文件不会自适应Loader的大小,SWFLoader加载的内容会缩放内容以适应 SWFLoader 控件的大小。所以在Loader加载时您可能需要为 Loader 对象定义蒙版,以防止将加载的内容(Loader 对象的子级)绘画到该蒙版之外的舞台部分中。
3.SWFLoader其实是对Loader的一种包装,所以自身内置了需要加载需要的功能,譬如load方法中可以直接传入要加载资源的url而不用传入URLRequest对象,自身就用loaderContext属性来进行设置等。
Adobe官方文档Comparing the SWFLoader and Loader controls一节中对其也有很好的描述:
The SWFLoader control has the following features:
Supports Flex styles and effects; the Loader class does not have any inherent support for styles and effects.
支持flex的样式和特效;而Loader类却不支持任何固有的样式和特效。
Lets you monitor the progress of a load inherently (if you use the Loader class, you have to first get a reference to a LoaderInfo object).
方便管理加载进度;如果使用Loader则首先要获取LoaderInfo引用。
Is a UIComponent. As a result, the SWFLoader control participates in the display list and adds children to the display list without having to write additional code.
是一个UIComponent组件。SWFLoader它自己管理了所有子显示对象,不需要添加多余的代码。
Resizes and scales the contents automatically.
自动缩放显示内容的大小。
Does not require that the SWF file be an instance of the Application class, it just checks if an Application exists, and handles sizing differently.
可以加载Application以外的实现类,如果检测到不是一个Application,会自动进行处理。
Can be multi-versioned. The Loader class does not have built-in support for multi-versioning.
可以处理不同的版本。Loader不支持加载不同的编译版本。
相关推荐
#swfloader加载器 用于在flex中缓存加载swf文件。 可用于组件模块化加载。加载完成的组件,下次加载可直接从SWFCache中根据url获取相应内容,避免重复加载 单个加载方式 var item:SWFItem = new SWFItem(); item.url...
var swfLoader:Loader = new Loader(); var swfRequest:URLRequest = new URLRequest("mySwf.swf"); swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded); swfLoader.load(swfRequest); ...
如果是矢量图形,你可能需要使用 `SWFLoader` 类来加载 SWF 文件,然后将其中的图形作为 Icon 使用。如果是位图 Icon,可以使用上述的 `Loader` 方法。此外,Flex 还提供了 `mx.controls.IconItem` 和 `mx.controls....
在实际应用中,开发者还可以利用SWFLoader类,它是一个预设的UIComponent,可以直接在Flex或其他基于Flex的环境中使用,简化加载过程。 综上所述,加载SWF文件是Flash开发中的一个重要环节,它涉及ActionScript编程...
6. **交互与通信**:一旦SWF加载成功,你就可以通过`Loader`对象的`content`属性访问其内部的类和对象。如果SWF包含公开的类或方法,你可以实例化这些类或调用这些方法。 例如,假设SWF库有一个名为`MyClass`的类,...
<mx:SWFLoader id="flashLoader" width="100%" height="100%" creationComplete="loadFlash()"/> ``` 2. Flash调用Flex函数 为了使Flash能够调用Flex中的函数,我们需要在Flex中声明这些函数为公开的,这样它们...
整个 Flex 项目确实可以载入到其它项目中的,但不是以 Module 方式载入而是通过普通方法加载,例如使用 SWFLoader 或 Loader 加载,SystemManager 作为顶级容器加入到项目的显示列表。 SystemManager 的 ...
最后,对于`Loader`、`SWFLoader`、声音、视频、效果等资源,需要确保在适当的时候停止播放、停止音频、关闭网络连接等,以防止内存泄漏。例如,对于`Loader`,在加载完资源后,应确保停止加载操作,并清理相关资源...
此外,每个DataGrid列(mx.controls.GridColumn)应配置`dataField`属性,与数据源中的字段对应,以便显示和编辑数据。我们还需要监听`editEvent`,当用户完成编辑时进行相应的数据处理。 ```actionscript ...
AS3提供了Loader类和SWFLoader类等工具,可以方便地实现动态加载。 5. **模块化设计**:大型应用可能包含多个相互独立的子系统,如用户管理、支付系统等。通过模块化设计,每个子系统都可以作为一个独立的模块存在...
加载控件(Loader controls),用于加载外部资源,比如Image(图片)、SwfLoader(SWF加载器)、VideoDisplay(视频显示)等;菜单控件(Menu controls),包括Menu(菜单)、MenuBar(菜单栏)、PopUpMenuButton...
《Flex 3 组件实例与应用(2009版)》是一本深入解析Adobe Flex 3框架下组件使用与实践的专业书籍。本书由Dason精心整理于2009年2月,全面覆盖了Flex 3中的各种控件、容器、数据可视化组件以及效果、视图状态和过渡...