AS3加载器

最近鼓捣除了一个加载器。可以分布式地加载文本文件以及SWF文件。本人将它写成了一个Flex库。本着共同进步的目的,我将其分享出来。

测试结果 :

控制台:

测试资源:

关于 Flash(SWF)美术资源的介绍:

关于测试的核心代码 :

package
{
	import com.DispalyLoader;
	import com.LoaderManager;
	import com.ResLibrary;
	import com.TextObjectLoader;

	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.system.ApplicationDomain;
	import flash.system.LoaderContext;

	public class MyTest extends Sprite
	{
		[SWF(frameRate=‘30‘ , width=‘1280‘ , height=‘720‘, backgroundColor=‘0x001119‘, pageTitle="TEST")]
		public function MyTest()
		{
			var $urlHttp : String = stage.loaderInfo.url;
			var $index : int = $urlHttp.indexOf( "MyTest" );
			var http : String = $urlHttp.substring( 0 , $urlHttp.indexOf( "MyTest" ) );
			trace( http );

			var $loader : LoaderManager = new LoaderManager(true,true);
			var $txtRes : TextObjectLoader = new TextObjectLoader( this.textCallback , http + "config.xml" );
			var $txtLanRes : TextObjectLoader = new TextObjectLoader( this.textCallback , "../asset/xml/lan.xml" );

			var $display : DispalyLoader = new DispalyLoader( this.displayCallBack,"../asset/swf/Test.swf" , ApplicationDomain.currentDomain);
			var $display1 : DispalyLoader = new DispalyLoader( this.displayCallBack,"../asset/swf/Others.swf" , ApplicationDomain.currentDomain);
			$loader.append( $txtRes );
			$loader.append( $txtLanRes );
			$loader.append( $display );
			$loader.append( $display1 );
			$loader.startLoader();

		}
		private function textCallback( $type : String , $data : Object , $extends : Object = null ) : void
		{
			switch( $type )
			{
				case "COMPLETE":
					trace( "http :  " + $data + " 数据 : "  +  $extends as String );
					break;
				case "PROGRESS":
					var $progress : ProgressEvent = $data as ProgressEvent;
					trace("加载进度 : " + ($progress.bytesLoaded / $progress.bytesTotal ) );
					break;
			}
		}
		private function displayCallBack( $type : String , $data : Object , $extends : Object = null ) : void
		{
			switch( $type )
			{
				case "LOADED":
					ResLibrary.instance.addSwf( $data as String , ( $extends as LoaderContext ).applicationDomain );
					// 测试
					var $swfArr : Array = ( $data as String ).split( "/" , ( $data as String ).length );
					var $mc : MovieClip = null;
					switch($swfArr[$swfArr.length-1])
					{
						case "Test.swf":
							$mc = ResLibrary.instance.getMovieClip( "MCC" );
							break;
						case "Others.swf":
							$mc = ResLibrary.instance.getMovieClip( "MCQ" );
							break;
					}
					 
					stage.addChild( $mc );
					break;
				case "LOADED_ERROR":
					break;
				case "PROGRESS":
					break;
			}
		}
	}
}
时间: 2024-08-28 05:33:41

AS3加载器的相关文章

js前端模块化之加载器原理解析(一)

先来说一下前端模块化的价值:引用模块此处有详细的介绍,可以自行前往观看. 一.总结如下优点: (1)解决命名冲突(2)烦琐的文件依赖(3)模块的版本管理(4)提高可维护性(5)前端性能优化(6)跨环境共享模块 二.加载器的基本思路: 如何去定义我们的模块? 如何将我们定义的模块去合并? 我们想一下,如果我们正常的引用入js到页面我们需要做神马事情,是否是使用:<script type="text/javascript" src="xxx"></sc

jQuery Mobile 手动显示ajax加载器

在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更好一些. 先看两个方法,显示和关闭,方法来自于参考:http://blog.csdn.net/zht666/article/details/8563025 <script> //显示加载器 function showLoader() { //显示加载器.for jQuery Mobile 1.2.

类的加载器 ClassLoader

先说明类的加载过程: 当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化: 而关于ClassLoader: 类加载器是用来把类(class)装载进内存的.JVM 规范定义了两种类型的类加载器:启动类加载器(bootstrap)和用户自定义加载器(user-defined class loader). JVM在运行时会产生3个类加载器组成的初始化加载器层次结构 ,如下图所示: 举例如下: public class TestClassLoader { pu

AMD加载器实现笔记(五)

前几篇文章对AMD规范中的config属性几乎全部支持了,这一节主要是进一步完善.到目前为止我们的加载器还无法处理环形依赖的问题,这一节就是解决环形依赖. 所谓环形依赖,指的是模块A的所有依赖项的依赖中有没有依赖A模块本身的模块.如果有那就说明存在环形依赖.所以检验的方式是利用递归,检查一个模块的依赖的依赖项中有没有依赖A模块,以及依赖项的依赖项的依赖项中有没有A模块,核心代码如下: function checkCircleRef(start, target){ var m = modules[

AMD加载器实现笔记(二)

AMD加载器实现笔记(一)中,我们实现了一个简易的模块加载器.但到目前为止这个加载器还并不能称为AMD加载器,原因很简单,我们还不支持AMD规范中的config配置.这篇文章中我们来添加对config的中baseUrl和packages的支持.API设计如下: 1 require.config({ 2 baseUrl: "./", 3 packages: [{ 4 name: "more", 5 location: "./more" 6 }, {

03-类加载器

类加载器 类加载定义:通过一个类的全限定名来获取描述此类的二进制流来获取所需要的类的动作 类从被加载到虚拟机内存中开始,到卸载出内存生命周期分为以下7个阶段: 加载(Loading) -> [验证(Verification) -> 准备(Preparation) -> 解析(Resolution)] -> 初始化(Initialization) -> 使用(Using) -> 卸载(Unloading) 验证.准备和解析统称为连接(Linking) 主动引用(会触发类初

类自动加载器

1 /** 2 * Created by [中弘集团] qq 812035863 . 3 * User: Taoist 4 * Date: 2015/7/9 5 * Time: 20:57 6 * description: 自动类加载 7 * 入口文件首先载入加载器 8 * 9 * 加载文件要放在类库内才有作用 10 * 11 * 如果 root 是根目录 12 * 13 * /root/library 是库目录 14 * 15 * autoload文件放在library 下面 16 * 17

C编译器、链接器、加载器详解

摘自http://blog.csdn.net/zzxian/article/details/16820035 C编译器.链接器.加载器详解 一.概述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可加载.可执行代码的过程. 过程图解如下: 预处理器:将.c 文件转化成 .i文件,使用的gcc命令是

AMD加载器实现笔记(四)

继续这一系列的内容,到目前为止除了AMD规范中config的map.config参数外,我们已经全部支持其他属性了.这一篇文章中,我们来为增加对map的支持.同样问题,想要增加map的支持首先要知道map的语义. 主要用于解决在两个不同模块集中使用一个模块的不同版本,并且保证两个模块集的交互没有冲突. 假设磁盘有如下文件: 当'some/newmodule'请求'foo'模块时,它将从foo1.2.js总得到'foo1.2'模块:当'some/oldmodule'请求'foo'模块时它将从foo