AIR原来也是可以多开的

package cn.love813.zealot.utils
{
	import flash.desktop.NativeApplication;
	import flash.events.Event;
	import flash.filesystem.File;
	import flash.filesystem.FileMode;
	import flash.filesystem.FileStream;
	
	import spark.components.WindowedApplication;
	/**
	 * 
	 * @author Dynasty Ming
	 * 
	 */
	public class MultiApplicationUtil
	{
		/**
		 *應用程序路徑文件 
		 */                
		private var _file:File;
		/**
		 *應用程序的XML配置 
		 */
		private var _runTimeXML:String;
		/**
		 *應用程序原生ID 
		 */                
		private var _id:String;
		public function MultiApplicationUtil(main:WindowedApplication)
		{
			_id=main.className;
			initID();
		}
		private function initID():void
		{
			//這得到那個主應用的XML
			_file=new File(File.applicationDirectory.nativePath+'/META-INF/AIR/'+'application.xml');
			_file.addEventListener(Event.COMPLETE,getFile);
			_file.load();
			
		}
		
		protected function getFile(e:Event):void
		{
			var fs:FileStream=new FileStream();
			fs.open(_file,FileMode.READ);
			//把里面的數據讀出來   你懂的
			_runTimeXML=fs.readUTFBytes(_file.data.bytesAvailable);                        
			fs.close();
			var version:String=(NativeApplication.nativeApplication.runtimeVersion).slice(0,3);        
			changeID(fs);
		}
		/**
		 *改變 ID  以便啟動多個 
		 * @param fs
		 * 
		 */                
		private function changeID(fs:FileStream):void
		{
			var ns:String='<id>';
			var ins:String='</id>';
			var b:int=_runTimeXML.search(ns);
			var e:int=_runTimeXML.search(ins);
			
			var ID:String=_runTimeXML.slice(b+ns.length,e);
			var num:int=int(ID.substring(_id.length,ID.length));
			
			num++;
			_runTimeXML=_runTimeXML.replace(ID,_id+num);
			fs.open(_file,FileMode.WRITE);
			fs.writeUTFBytes(_runTimeXML);
			fs.close();
		}
		
	}
}


转载的,使用的时候,只要在WindowApplication中,new一下这个类,并且把自己传进去,就OK鸟,但是调试的时候,要注释掉这个new,不然会出错。

转载连接:
http://zeusami.iteye.com/blog/1174681

你可能感兴趣的:(AIR)