load SWF_binary

by shunsuke_ohba
外部swfが読み込みテスト2
* バイナリでロード
♥0 | Line 78 | Modified 2009-12-15 18:59:39 | MIT License
play

ActionScript3 source code

/**
 * Copyright shunsuke_ohba ( http://wonderfl.net/user/shunsuke_ohba )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/5l2O
 */

/*
 * 外部swfが読み込みテスト2
 * バイナリでロード
 */ 
package 
{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.HTTPStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.system.*;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.ByteArray;
	
	/**
	 * ...
	 * @author Shunsuke Ohba
	 */
	[SWF(backgroundColor="#000000", frameRate="30",width="465",height="465")]
	public class Main2 extends Sprite 
	{
		private var URL:String="http://wonderfl.reinit.info/swf/loadswf.swf";
		private var mc:MovieClip;
		private var _loader:Loader;
		private var _urlLoader:URLLoader;
		private var _trPass:String;
		private var t:TextField;
		private var fase:String="";
		/*======================================================================*//**
		 * constructor
		 */ 
		public function Main2():void {init();}
		
		private function init():void 
		{
			Security.loadPolicyFile("http://wonderfl.reinit.info/crossdomain.xml");
			t = addChild(new TextField) as TextField;
			t.autoSize = TextFieldAutoSize.LEFT;
			t.x = 5;
			t.text = "init";
			t.textColor = 0xffffff;
			_trPass = "urlLoader";
			
			_urlLoader = new URLLoader;
			//バイナリで読み込み
			
			_urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			_urlLoader.addEventListener(ProgressEvent.PROGRESS, _onProgress);
			_urlLoader.addEventListener(Event.COMPLETE, _onURLLoaderComplete);
			_urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,_onSecurityError);
			_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, _onIOError);
			_urlLoader.load(new URLRequest(URL));
			fase = "init";
		}
		
		
		private function _onSecurityError(e:SecurityErrorEvent):void 
		{
			
			t.width = 465;
			t.text = "SecurityError:"+fase;
			
		}
		
		private function _onProgress(e:ProgressEvent):void 
		{
			t.text = "Progress..." + e.bytesLoaded + "/" + e.bytesTotal;
		}
		
		private function _onURLLoaderComplete(e:Event):void 
		{
			fase = "loader";
			t.text = "URLLloaderComplete";
			_trPass = "loader";
			var i:int,l:int, bArr:ByteArray, a:Array;
			bArr = _urlLoader.data;
			_loader = new Loader;
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoaderComplete);
			_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _onIOError);
			_loader.loadBytes(bArr);
		}
		
		private function _onIOError(e:IOErrorEvent):void 
		{
			t.text = "Error:"+_trPass;
		}
		
		private function _onLoaderComplete(e:Event):void 
		{
			t.text = "loaderComplete";
			addChild(_loader);
			//外部swfロード完了
			var swf:Object = _loader.content;
			
			//外部swfに設定してあるinitメソッドたたく
			swf.init();
		}
	}
}