`

Flex从swf中加载资源和类

 
阅读更多

需要为直播播放器做几个新的样式,想将每个样式的布局XML和图片放到对应的swf中。

先用Flex 创建AS项目,主文件为:TestAssets.as

package
{
	import flash.display.Sprite;

	public class TestAssets extends Sprite
	{
		public function TestAssets()
		{
		}
		
		
		[Embed(source="/assets/images/volume_back.png")]
		public static var test1:Class;
	}
}

 

在Flash中新建项目:test.fla,导入一个图片到库中,拖到舞台,然后F8,创建影片剪辑,将该影片剪辑的AS链接起名为testClass。

因为还想要打包进去一个XML,于是创建一个空元件,将其AS链接起名为ClassA,并创建ClassA.as:

package  {
	import flash.display.MovieClip;
	public class ClassA extends MovieClip {

		public function ClassA() {
			// constructor code
		}
		
		public static var theXML:XML = <root><item title="title123"><name>Jason</name></item></root>;
		public var theVar:String = "variable" + new Date().time;
	}
	
}

 

 

Flex代码:

<?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="application1_creationCompleteHandler(event)">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			import spark.components.Image;
			
			
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				load1();
				load2();
			}
			
			// load assets from Flex AS project swf. test1 is a static class for image Embed.
			private function load1():void
			{
				var loader:Loader = new Loader();
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void
				{
					trace("completed");
					// TestAssets 为Flex AS项目主文件的名称。
					var asset:Object = loader.contentLoaderInfo.applicationDomain.getDefinition("TestAssets");
					var img:Image = new Image();
					img.source = asset.test1;
					group.addElement(img);
				});
				loader.load(new URLRequest("TestAssets.swf"));
			}
			
			// load assets from Flash project swf. 
			private function load2():void
			{
				var loader:Loader = new Loader();
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void
				{
					trace("completed");
					// "testClass" 为某个图片元件的AS链接。
					var asset:Object = loader.contentLoaderInfo.applicationDomain.getDefinition("testClass");
					var img:Image = new Image();
					img.source = new asset();
					group.addElement(img);
					
					// ClassA 为空元件的AS链接。
					var cla:Object = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassA");
//					var cla1:Object = loader.contentLoaderInfo.applicationDomain.getDefinition("test");					
					trace(cla.theXML);
					var claInstance:Object = new cla();
					trace(claInstance.theVar);
				});
				loader.load(new URLRequest("test.swf"));
			}
			
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<s:VGroup id="group">
		
	</s:VGroup>
	
</s:Application>

 

debug模式运行:

<root>

  <item title="title123">

    <name>Jason</name>

  </item>

</root>

variable1386586432855

分享到:
评论

相关推荐

    关于flex与flash生成swf文件的加载(体积)问题

    4. **发布设置**:在Flash或Flex的发布设置中,可以选择优化、压缩和排除未使用的资源等选项来减小SWF体积。例如,开启ActionScript优化和使用压缩SWF功能。 5. **使用AJSPlayer**:提到的AJSPlayer可能是一个第三...

    Flex控制swf简单源码

    // SWF加载完成后的处理 var loadedSWF:MovieClip = Loader(event.target.loader).content as MovieClip; // 在这里可以对加载的SWF进行操作,例如调用其公开的方法或属性 loadedSWF.somePublicMethod(); } ``...

    flex加载资源_loader类使用实例

    总结,Loader类是Flex和ActionScript 3中不可或缺的组件,它使动态加载资源变得简单。掌握Loader类的使用方法,能够极大地提升Flex应用的交互性和用户体验。在实际开发中,可以根据需求灵活运用Loader类,实现各种...

    flex调用swf——swf可以转成具体的对象,而非MovieClip

    总之,通过正确的ActionScript编程和项目配置,我们可以将外部SWF资源作为具体对象在Flex应用中使用,从而极大地扩展了我们的功能和灵活性。这在处理第三方组件或者复用已有代码库时尤其有用。为了获取更多具体的...

    flash actionscript3 从1个SWF中加载另1个SWF 按1播放SWF中的一段 按2播放另一段动画.rar

    本示例“flash actionscript3 从1个SWF中加载另1个SWF 按1播放SWF中的一段 按2播放另一段动画.rar”正是展示了如何实现这一特性,主要涉及到以下几个关键知识点: 1. **Loader类**:ActionScript3中的`Loader`类是...

    fusioncharts/widgets for flex 的swf 与swc文件

    在这个特定的压缩包中,我们关注的是FusionCharts为Flex平台提供的组件,包括SWF和SWC文件。 1. **FusionCharts简介**: FusionCharts是一款JavaScript图表库,支持多种图表类型,如柱状图、饼图、线图、散点图等。...

    flex加载flashpaper示例

    在本示例中,我们将深入探讨如何在Flex应用中加载和展示由FlashPaper生成的Flash内容。 首先,我们需要理解Flex中的SWFLoader组件。SWFLoader是Flex SDK提供的一种用于加载和显示SWF文件(包括由FlashPaper转换的...

    Flex应用程序中嵌入各种类型的资源方法 源码

    在Flex应用程序开发中,资源管理是一项关键任务,它涉及到如何有效地加载、管理和使用应用程序所需的文本、图像、声音、视频等多种类型的数据。本资料主要聚焦于在Flex中如何嵌入和管理这些资源,以提高应用程序的...

    flex 自定义加载进度框

    6. **集成到Flex应用**:将自定义预加载器的SWF文件添加到Flex项目的预加载序列中,通常通过修改`-preloader`编译选项。 7. **优化加载效率**:考虑如何优化资源加载,减少用户的等待时间,例如通过压缩图片、合并...

    Flex运行时加载皮肤

    - **实现**:通过定义一个名为`Wrapper`的类,并使用`[Embed]`元数据标签指定要嵌入的皮肤资源(如`flex_skins.swf`中的`RadioButton_upIcon`)。这些资源将在运行时被加载。 2. **第二步:将外壳SWF文件放置在...

    Flex开发辅助工具

    这些工具对于Flex开发者来说是宝贵的资源,它们不仅提供了一个学习和实验的平台,还能帮助开发者在实际项目中快速原型化和调试设计。通过深入理解并熟练使用这些辅助工具,开发者可以提高其在Flex开发领域的专业技能...

    swf-file-format-spec.pdf.zip_flex_swf

    Flex使用MXML和ActionScript来创建用户界面,编译后的结果就是SWF文件,可以在各种浏览器和操作系统上运行,无需安装额外插件。 `swf-file-format-spec.pdf` 这份文档可能涵盖了以下关键知识点: 1. **文件结构**...

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

    动态加载资源可以显著提高应用程序的性能,减少启动时间和内存消耗。 在 Flex 中,我们可以使用 `Loader` 类来实现图像的动态加载。`Loader` 类是 Flex 的核心组件之一,它负责加载各种类型的媒体,包括图像(Image...

    FLEX自定义等待图标资源

    1. **资源加载**:确保正确加载SWF和GIF资源,这可能涉及到URLLoader或BitmapData类的使用。 2. **时间同步**:等待图标动画的播放应与后台处理同步,避免过早或过晚显示。 3. **大小调整**:根据应用的界面尺寸调整...

    flex动态添加资源

    在Flex开发中,"flex动态添加资源"是一个重要的优化策略,它允许开发者在运行时根据需要动态加载资源,而不是在构建SWF文件时一次性将所有资源嵌入其中。这种技术对于大型应用程序尤其有用,因为它可以显著减小SWF...

    Flex 延迟加载 问题说明 处理 实现

    - **使用`Loader`类**:通过动态地将SWF文件加载到容器中,可以在运行时根据需要加载不同的资源。 - **组件懒加载**:利用Flex组件的事件机制,在特定条件下触发组件的加载。 - **数据懒加载**:仅在需要显示数据时...

    [转] [Flash/Flex] 加载SWF性能VS影片剪辑性能

    在IT行业中,尤其是在Flash和Flex开发领域,性能优化是一个至关重要的议题。本文将详细探讨“加载SWF性能VS影片剪辑性能”的主题,基于提供的博客链接(https://as3.iteye.com/blog/1454896),我们将深入分析这两种...

    flex自定义加载器

    Flex加载资源时需要考虑安全策略。Flash Player使用沙箱模型来限制不同域之间的交互。在创建自定义加载器时,要确保遵守这些规则,例如使用`Security.loadPolicyFile()`来允许跨域加载。 4. **数据解码与转换** ...

Global site tag (gtag.js) - Google Analytics