`

Flex 使用SWFloader控制SWF元件

 
阅读更多

SWFLoader加载外部swf是一个很好的方法,在进行Flex游戏开发的时候,我们通常会需要很多Flash提供的游戏角色,这些角色可以每个都是一个单独的swf,也可以是存在于一个swf文件中的各个元件。两种方法各有优劣:
1. 单独的swf,每个角色独立性很强,可以在需要的时候才加载。未来修改角色也不会影响到其它角色。但是会有很多的swf需要管理。
2. 每个角色是一个元件,存在于一个swf中,这种方法比较容易管理资源,比较干净。但是修改一个角色都需要重新编译swf,可能会误操作影响其它的元件。而且一次加载所有角色,可能会加载许多不必要的元件,浪费带宽。

两种方法怎么选择,根据项目读者根据以下几个问题考虑:
1. 你的所有元件相互之间是否又很多公用元件?如果是的话,可以考虑放到一个swf中,因为这样会降低所有元件的文件量。
2. 你的所有元件是否都继承同一些类,实现同一些接口,调用同一些类?如果是的话,可以考虑放到一个swf中,这样比较容易管理类包,而且降低swf的文件量,因为共有的类只编译一次。
3. 你的所有元件是否完全独立,没有任何关系?如果是的话,你可以考虑每个角色独立的swf。
具体实现代码如下:

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="init()"
			   >
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.controls.SWFLoader;
			import mx.core.UIComponent;
 
			private var swfLoader:SWFLoader = new SWFLoader();
			private function init():void{
				swfLoader.addEventListener(Event.COMPLETE,swfLoadComplete);
				swfLoader.load("assets/fishmomo.swf");
			}
			private function swfLoadComplete(e:Event):void{
				/**
				 * 将整个swf都加载到flex舞台上
				 * 此方法将每个flex要用的资源做成单独的swf,需要时才加载进来
				 */ 
				addElement(swfLoader);
				var swf:MovieClip = swfLoader.content as MovieClip;
				//fish 是 swf主舞台上的一个鱼对象,属性命名为fish
				//调用舞台上fish元件的say方法
				swf.fish.say("Load a swf");
 
				/**
				 * 此方法可以把所有的flex要用的资源放到一个swf中
				 * 把需要在flex中使用的元件链接到一个类,并将此元件拖到flash舞台
				 * 通过类名,随意显示其中一个元件到flex舞台
				 */ 
				var FishSymbol:Object = swfLoader.content.loaderInfo.applicationDomain.getDefinition("Fish");
				var f:MovieClip = new FishSymbol() as MovieClip;
				//调用元件的say方法
				f.say("Load a symbol within a swf");
				var ui:UIComponent = new UIComponent();
				ui.addChild(f);
				addElement(ui);
			}
		]]>
	</fx:Script>
</s:Application>

 http://www.iteye.com/topic/773679/

 

http://anjantek.com/2011/09/04/flex-4-5-spark-datagrid-radio-button-itemrenderer/

分享到:
评论

相关推荐

    swfloader:swf加载器,用于在flex中加载swf文件。可用于组件模块化,加载然后反射得到相应类

    用于在flex中缓存加载swf文件。 可用于组件模块化加载。加载完成的组件,下次加载可直接从SWFCache中根据url获取相应内容,避免重复加载 单个加载方式 var item:SWFItem = new SWFItem(); item.url = "module/...

    flex加载flashpaper示例

    SWFLoader是Flex SDK提供的一种用于加载和显示SWF文件(包括由FlashPaper转换的文档)的组件。在Flex项目中,我们可以通过在.mxml或ActionScript代码中添加SWFLoader实例来实现这一功能。 以下是创建Flex加载...

    Flex在线阅读pdf工具swftools详解

    在Flex项目中,可以使用加载SWF文件的类,如`SWFLoader`,将转换后的SWF文档加载到Flex应用程序中。首先,创建一个`SWFLoader`实例,并设置其`source`属性为SWF文件的URL: ```actionscript var swfLoader:...

    flex 嵌入完美Iframe

    1. 创建一个SWFLoader组件:Flex提供了SWFLoader组件,可以加载SWF或其他内容,包括HTML。我们可以通过设置其`source`属性来指定要加载的HTML页面URL。 2. 处理跨域问题:由于安全限制,如果HTML页面不在同一域下,...

    Flex与Flash相互调用

    在Flex中嵌入Flash SWF文件,通常使用`SWFLoader`组件。首先,在Flex项目中引入`mx.controls.SWFLoader`库,然后创建一个`SWFLoader`实例,设置其`source`属性为Flash SWF文件的URL或本地路径。例如: ```xml &lt;!...

    Flex启动与初始化

    整个 Flex 项目确实可以载入到其它项目中的,但不是以 Module 方式载入而是通过普通方法加载,例如使用 SWFLoader 或 Loader 加载,SystemManager 作为顶级容器加入到项目的显示列表。 SystemManager 的 ...

    tt.rar_FLEX FTP_flex

    对于文件显示,Flex提供了多种组件可以用来展示不同类型的文件,如BitmapImage用于显示图片,Text用于展示文本,SWFLoader用于加载和显示SWF文件等。开发者可以根据实际需求选择合适的组件,并结合ActionScript进行...

    多个swf的通讯

    - 两个SWF需要在同一个目录下或者Flex应用通过`SWFLoader`加载Flash SWF,以便它们可以在运行时互相通信。 **AS3的SWF之间通讯:** - AS3的SWF可以直接进行跨脚本通讯(Cross-Scripting),不需要`LocalConnection`...

    让Flex3与flashcs3珠联璧合

    - **在Flex中使用Flash内容**:在Flex的MXML文件中,使用`&lt;mx:SWFLoader&gt;`或`&lt;s:SWFLoader&gt;`标签加载SWF文件,将其嵌入到用户界面中。通过设置`source`属性指定SWF文件的位置。 - **交互处理**:为了实现Flex和...

    flex-bootstrap.jar.zip

    2. **导入样式**:由于Flex是基于Flash Player或Adobe AIR运行的,因此Bootstrap的CSS样式需要通过SWFLoader或其他方法加载到Flex应用中。这可能需要在Flex的MXML文件中使用`&lt;mx:HTML&gt;`或`&lt;s:HTML&gt;`标签,并指定...

    flex3 cookbook 英文版pdf

    - **使用SWFLoader加载SWF文件**:说明如何在Flex应用中动态加载外部SWF文件,这对于集成多媒体内容非常有用。 - **为组件设置Tab索引**:解释如何设置组件的Tab索引,以改进键盘导航体验。 - **为控件设置标签...

    基于Flex的Flash聊天室的实现

    - 添加SWFLoader组件:由于聊天室可能包含多个功能模块,我们可以通过SWFLoader组件加载其他SWF文件以实现模块化开发。 2. **用户界面设计** - 输入框与发送按钮:设计一个简洁的用户界面,包括输入框让用户输入...

    flex/flash自定义组件(搜索栏)

    自定义组件可以通过在Flex项目的MXML文件中引用`&lt;mx:SWFLoader&gt;`或`&lt;s:SWFObject&gt;`标签来加载`searchField.swf`。此外,也可以将AS3代码引入项目,以便在运行时动态实例化组件。 5. **源码分析**: 对于`document...

    FLEX+Flash动态更换皮肤演示

    4. **动态加载和应用皮肤**:在Flex中,可以使用`SWFLoader`组件来加载外部的SWF文件,然后通过反射或者接口调用来获取并应用皮肤。这通常涉及到对ActionScript类的深入理解和对Flex组件API的熟练掌握。 5. **事件...

    Flash课件制作教程-加载SWF文件

    在实际应用中,开发者还可以利用SWFLoader类,它是一个预设的UIComponent,可以直接在Flex或其他基于Flex的环境中使用,简化加载过程。 综上所述,加载SWF文件是Flash开发中的一个重要环节,它涉及ActionScript编程...

    Flex 动态加载 Image 和 Icon 解决方案

    如果是矢量图形,你可能需要使用 `SWFLoader` 类来加载 SWF 文件,然后将其中的图形作为 Icon 使用。如果是位图 Icon,可以使用上述的 `Loader` 方法。此外,Flex 还提供了 `mx.controls.IconItem` 和 `mx.controls....

    AS3 调用SWF类库

    提供的压缩包文件如`SWFLoader.as`可能是一个实现了上述逻辑的AS3类,`main.fla`和`loadswf.fla`可能是包含加载和被加载SWF的Flash项目文件,而`loadswf.swf`和`main.swf`则是编译后的SWF文件。通过学习这些示例,你...

Global site tag (gtag.js) - Google Analytics