URLStream加载美术资源

package 
{
	//import com.demonsters.debugger.MonsterDebugger;

	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.net.URLRequest;
	import flash.net.URLStream;
	import flash.system.ApplicationDomain;
	import flash.system.LoaderContext;
	import flash.system.Security;
	import flash.utils.ByteArray;

	public class Preloader extends Sprite
	{
		private var bytes:ByteArray;

		public function Preloader()
		{
			Security.allowDomain("*");
			Security.allowInsecureDomain("*");

			//MonsterDebugger.initialize(this);
			//MonsterDebugger.trace(this, "Hello World!");

			//var gameMain:GameMain = new GameMain();
			//addChild(gameMain);

			load();
		}

		private function load():void
		{
			var stream:URLStream = new URLStream();
			stream.addEventListener(ProgressEvent.PROGRESS, this.onAssetProgress);
			stream.addEventListener(Event.COMPLETE, this.onAssetComplete);
			var req:URLRequest = new URLRequest();
			req.url = "Main.swf";
			stream.load(req);
		}
		protected function onAssetProgress(e:ProgressEvent):void
		{
			trace("e.bytesLoaded:"+e.bytesLoaded + "e.bytesTotal:"+e.bytesTotal);
		}
		protected function onAssetComplete(e:Event):void
		{
			var stream:URLStream = (e.currentTarget as URLStream);
			bytes = new ByteArray();
			stream.readBytes(bytes);

			loadBytesHs();
		}

		public function loadBytesHs():Loader
		{
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onModuleComplete);
			this.addChild(loader);
			if (bytes != null)
			{
				var $loadercontext:LoaderContext = new LoaderContext(false);
				$loadercontext.applicationDomain = ApplicationDomain.currentDomain;

				/*//flash 10.0兼容
				if($loadercontext.hasOwnProperty("allowCodeImport"))
				{
					$loadercontext["allowCodeImport"]=true;
				}*/
				loader.loadBytes(bytes, $loadercontext);
			}
			return (loader);
		}

		protected function onModuleComplete(e:Event):void
		{
			var loaderInfo:LoaderInfo = (e.currentTarget as LoaderInfo);
			if (loaderInfo.hasEventListener(Event.COMPLETE))
			{
				loaderInfo.removeEventListener(Event.COMPLETE, this.onModuleComplete);
			}
		}
	}
}

  

原文地址:https://www.cnblogs.com/602147629/p/2864576.html