亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dict.as

?? Flex的JSON類庫
?? AS
字號:
package com.adobe.protocols.dict
{
	import com.adobe.protocols.dict.events.*;
	import com.adobe.protocols.dict.util.*;
	
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.Socket;
	import mx.rpc.http.HTTPService;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.events.FaultEvent;
	import flash.xml.XMLNode;
	import mx.utils.StringUtil;

	public class Dict
		extends EventDispatcher
	{
		// Event type names.
		public static var CONNECTED:String = "connected";
		public static var DISCONNECTED:String = "disconnected";
		public static var IO_ERROR:String = IOErrorEvent.IO_ERROR;
		public static var ERROR:String = "error";
		public static var SERVERS:String = "servers";
		public static var DATABASES:String = "databases";
		public static var MATCH_STRATEGIES:String = "matchStrategies";
		public static var DEFINITION:String = "definition";
		public static var DEFINITION_HEADER:String = "definitionHeader";
		public static var MATCH:String = "match";
		public static var NO_MATCH:String = "noMatch";

		public static var FIRST_MATCH:uint = 0;
		public static var ALL_DATABASES:uint = 1;

		private var socket:SocketHelper;
		
		private var dbShortList:Boolean;

		public function Dict()
		{
			this.socket = new SocketHelper();
			this.socket.addEventListener(Event.CONNECT, connected);
			this.socket.addEventListener(Event.CLOSE, disconnected);
			this.socket.addEventListener(SocketHelper.COMPLETE_RESPONSE, incomingData);
			this.socket.addEventListener(IOErrorEvent.IO_ERROR, ioError);
			this.socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError);
		}

		public function connect(server:String, port:uint = 2628):void
		{
			if (this.socket.connected)
			{
				this.socket.close();
			}
			this.socket.connect(server, port);
		}

		public function connectThroughProxy(proxyServer:String,
											proxyPort:int,
											server:String,
											port:uint = 2628):void
		{
			if (this.socket.connected)
			{
				this.socket.close();
			}
			this.socket.setProxyInfo(proxyServer, proxyPort);
			this.socket.connect(server, port);
		}

		public function disconnect():void
		{
			this.socket.close();
			this.disconnected(null);
		}

		public function getServers():void
		{
			var http:HTTPService = new HTTPService();
			http.url = "http://luetzschena-stahmeln.de/dictd/xmllist.php";
			http.addEventListener(ResultEvent.RESULT, incomingServerXML);
			http.addEventListener(FaultEvent.FAULT, httpError);
			http.resultFormat = HTTPService.RESULT_FORMAT_E4X;
			http.send();
		}

		public function getDatabases(shortList:Boolean=true):void
		{
			this.dbShortList = shortList;
			this.socket.writeUTFBytes("show db\r\n");
			this.socket.flush();
		}

		public function getMatchStrategies():void
		{
			this.socket.writeUTFBytes("show strat\r\n");
			this.socket.flush();
		}

		public function match(database:String, term:String, scope:String="prefix"):void
		{
			this.socket.writeUTFBytes("match " + database + " " + scope + " \"" + term + "\"\r\n");
			this.socket.flush();
		}

		public function define(database:String, term:String):void
		{
			this.socket.writeUTFBytes("define " + database + " \"" + term + "\"\r\n");
			this.socket.flush();
		}

		public function lookup(term:String, scope:uint):void
		{
			var flag:String;
			if (scope == Dict.ALL_DATABASES)
			{
				flag = "*";
			}
			else if (scope == Dict.FIRST_MATCH)
			{
				flag = "!";
			}
			this.socket.writeUTFBytes("define " + flag + " \"" + term + "\"\r\n");
			this.socket.flush();
		}

		//// Private functions ////

		private function connected(event:Event):void
		{
        	// Wait to dispatch an event until we get the 220 response.
    	}

		private function disconnected(event:Event):void
		{
        	dispatchEvent(new DisconnectedEvent());
    	}

		private function incomingServerXML(event:ResultEvent):void
		{
			var dictd:Namespace = new Namespace("http://www.luetzschena-stahmeln.de/dictd/");
			var result:XML = event.result as XML;
			var server:String, description:String;
			var servers:Array = new Array();
			for each (var serverNode:XML in result.dictd::server)
			{
				server = serverNode.dictd::dictdurl;
				description = serverNode.dictd::description;
				if (StringUtil.trim(server).length != 0 &&
					StringUtil.trim(description).length != 0)
				{
					var dServer:DictionaryServer = new DictionaryServer();
					dServer.server = server.replace("dict://", "");
					dServer.description = description;
					servers.push(dServer);
				}
			}
			var dEvent:DictionaryServerEvent = new DictionaryServerEvent();
			dEvent.servers = servers;
			dispatchEvent(dEvent);
		}

		private function incomingData(event:CompleteResponseEvent):void
		{			
			var rawResponse:String = event.response;
			var response:Response = this.parseRawResponse(rawResponse);
			var responseCode:uint = response.code;
			if (responseCode == 552) // no matches
			{
				throwNoMatchEvent(response);
			}
			else if (responseCode >= 400 && responseCode <= 599) // error
			{
				throwErrorEvent(response);
			}
			else if (responseCode == 220) // successful connection
			{
				dispatchEvent(new ConnectedEvent());
			}
			else if (responseCode == 110) // databases are being returned
			{
				throwDatabasesEvent(response);				
			}
			else if (responseCode == 111) // matches strategies
			{
				throwMatchStrategiesEvent(response);
			}
			else if (responseCode == 152) // matches
			{
				throwMatchEvent(response);
			}
			else if (responseCode == 150)
			{
				throwDefinitionHeaderEvent(response);
			}
			else if (responseCode == 151)
			{
				throwDefinitionEvent(response);
			}
    	}

    	private function ioError(event:IOErrorEvent):void
    	{
			dispatchEvent(event);
    	}

    	private function httpError(event:FaultEvent):void
    	{
    		trace("httpError!");
    	}

    	private function securityError(event:SecurityErrorEvent):void
    	{
    		trace("security error!");
    		trace(event.text);
    	}

    	// Dispatch new events.

    	private function throwDatabasesEvent(response:Response):void
    	{
			var databases:Array = new Array();
			var responseArray:Array = response.body.split("\r\n");
    		for each (var line:String in responseArray)
    		{
    			var name:String = line.substring(0, line.indexOf(" "));
    			if (name == "--exit--")
    			{
    				if (this.dbShortList)
    				{
    					break;
    				}
    				continue;
    			}
    			var description:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
    			databases.push(new Database(name, description));
    		}
    		var event:DatabaseEvent = new DatabaseEvent();
    		event.databases = databases;
    		dispatchEvent(event);
    	}

    	private function throwMatchStrategiesEvent(response:Response):void
    	{
			var strategies:Array = new Array();
			var responseArray:Array = response.body.split("\r\n");
    		for each (var line:String in responseArray)
    		{
    			var name:String = line.substring(0, line.indexOf(" "));
    			var description:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
    			strategies.push(new MatchStrategy(name, description));
    		}
    		var event:MatchStrategiesEvent = new MatchStrategiesEvent();
    		event.strategies = strategies;
    		dispatchEvent(event);
    	}

    	private function throwMatchEvent(response:Response):void
    	{
			var matches:Array = new Array();
			var responseArray:Array = response.body.split("\r\n");
    		for each (var line:String in responseArray)
    		{
    			var match:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
    			matches.push(match);
    		}
    		var event:MatchEvent = new MatchEvent();
    		event.matches = matches;
    		dispatchEvent(event);
    	}

    	private function throwErrorEvent(response:Response):void
    	{
    		var event:ErrorEvent = new ErrorEvent();
    		event.code = response.code;
    		event.message = response.headerText;
			dispatchEvent(event);
    	}

    	private function throwNoMatchEvent(response:Response):void
    	{
			dispatchEvent(new NoMatchEvent());
    	}

    	private function throwDefinitionHeaderEvent(response:Response):void
    	{
			var event:DefinitionHeaderEvent = new DefinitionHeaderEvent();
			event.definitionCount = uint(response.headerText.substring(0, response.headerText.indexOf(" ")));
			dispatchEvent(event);
    	}

    	private function throwDefinitionEvent(response:Response):void
    	{
    		var event:DefinitionEvent = new DefinitionEvent();
    		var def:Definition = new Definition();
    		var headerText:String = response.headerText;
    		var tokens:Array = headerText.match(/"[^"]+"/g);
    		def.term = String(tokens[0]).replace(/"/g, "");
    		def.database = String(tokens[1]).replace(/"/g, "");
    		def.definition = response.body;
    		event.definition = def;
			dispatchEvent(event);
    	}

    	private function parseRawResponse(rawResponse:String):Response
    	{
    		var response:Response = new Response();
    		var fullHeader:String;
    		if (rawResponse.indexOf("\r\n") != -1)
    		{
	    		fullHeader = rawResponse.substring(0, rawResponse.indexOf("\r\n"));
    		}
    		else
    		{
    			fullHeader = rawResponse;
    		}
      		var responseCodeMatch:Array = fullHeader.match(/^\d{3}/);
    		response.code = uint(responseCodeMatch[0]);
    		response.headerText = fullHeader.substring(fullHeader.indexOf(" ")+1, fullHeader.length);
			var body:String = rawResponse.substring(rawResponse.indexOf("\r\n")+2, rawResponse.length);
			body = body.replace(/\r\n\.\./, "\r\n.");
			response.body = body;
    		return response;
    	}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合久久久久综合| 婷婷一区二区三区| 欧美人与z0zoxxxx视频| 久久精品国产精品亚洲红杏| 国产精品久久久久久久久快鸭| 在线观看91视频| 国产乱淫av一区二区三区 | 婷婷一区二区三区| 精品国产a毛片| 欧洲国产伦久久久久久久| 国产成人一区在线| 喷白浆一区二区| 亚洲精品福利视频网站| 国产女人18毛片水真多成人如厕 | 成人精品视频一区二区三区 | 国产精品视频线看| 日韩三级在线免费观看| 91啪九色porn原创视频在线观看| 韩国av一区二区| 天天综合天天综合色| 亚洲女人的天堂| 国产精品福利在线播放| 精品播放一区二区| 日韩无一区二区| 欧美高清视频在线高清观看mv色露露十八 | 精品粉嫩aⅴ一区二区三区四区| 欧美亚男人的天堂| 91成人在线免费观看| 成人综合婷婷国产精品久久免费| 精品亚洲成a人| 日本久久精品电影| 成人av在线资源网| 国产精品自在欧美一区| 久久99蜜桃精品| 蜜臀av一区二区| 日韩影视精彩在线| 性做久久久久久免费观看欧美| 一区二区三区中文字幕电影| 成人欧美一区二区三区小说| 国产精品国产自产拍在线| 久久久久国产免费免费| 久久免费午夜影院| 国产蜜臀97一区二区三区| 国产精品素人视频| 国产精品麻豆一区二区| 国产精品久久久久永久免费观看 | 亚洲精品在线观| 欧美大片免费久久精品三p| 3d动漫精品啪啪一区二区竹菊| 欧美日韩中字一区| 51久久夜色精品国产麻豆| 91精品福利在线一区二区三区| 日韩欧美一级二级三级| 久久久久九九视频| 国产精品久久久久影院老司| 亚洲人123区| 亚洲国产精品久久久久秋霞影院| 亚洲国产日韩综合久久精品| 日韩avvvv在线播放| 久久99精品国产91久久来源| 激情综合色播激情啊| 国产91富婆露脸刺激对白| jizzjizzjizz欧美| 欧美影院精品一区| 日韩亚洲欧美在线观看| 久久久久九九视频| 亚洲欧美电影一区二区| 日韩综合小视频| 精品亚洲成a人| 91丝袜国产在线播放| 欧美中文一区二区三区| 日韩视频一区二区在线观看| 国产无人区一区二区三区| 亚洲欧美日韩国产综合在线| 午夜精品一区二区三区免费视频 | 男女男精品网站| 国产精品中文欧美| 91麻豆国产自产在线观看| 欧美一区二区日韩| 国产精品传媒在线| 日本在线观看不卡视频| 国产99久久久国产精品| 欧美在线播放高清精品| 2021中文字幕一区亚洲| 亚洲视频一二三| 久久66热re国产| 色婷婷综合在线| 精品国产青草久久久久福利| 亚洲你懂的在线视频| 美女视频免费一区| 一本久道久久综合中文字幕| 日韩午夜电影在线观看| 亚洲激情网站免费观看| 精彩视频一区二区三区| 欧美色手机在线观看| 久久久久久久一区| 三级欧美在线一区| 99久久精品免费看国产免费软件| 日韩一区二区免费在线电影| 日韩美女啊v在线免费观看| 精品一区二区综合| 欧美亚洲丝袜传媒另类| 日本一区二区在线不卡| 久久国内精品视频| 欧美在线不卡视频| 中文字幕va一区二区三区| 日韩二区在线观看| 在线亚洲免费视频| 国产欧美日韩久久| 麻豆91精品91久久久的内涵| 在线看国产日韩| 日韩美女精品在线| 丁香婷婷综合五月| 久久精品一二三| 看电视剧不卡顿的网站| 欧美猛男超大videosgay| 中文字幕亚洲视频| 懂色av中文一区二区三区| 欧美精品一区二区蜜臀亚洲| 天堂在线亚洲视频| 在线精品视频一区二区三四| 国产精品久久久久久久久晋中 | 亚洲bt欧美bt精品777| 97久久精品人人做人人爽| 国产亚洲制服色| 狠狠狠色丁香婷婷综合激情| 88在线观看91蜜桃国自产| 亚洲电影第三页| 欧美色区777第一页| 亚洲精品国产成人久久av盗摄 | 麻豆精品久久精品色综合| 欧美日韩第一区日日骚| 亚洲综合小说图片| 色婷婷国产精品综合在线观看| 亚洲欧洲成人精品av97| heyzo一本久久综合| 中文字幕av一区二区三区| 国产成a人亚洲精| 国产日韩影视精品| 国产成人av一区| 国产欧美精品日韩区二区麻豆天美| 久久66热偷产精品| 久久精品视频网| 国产91在线|亚洲| 国产精品第一页第二页第三页| 不卡av免费在线观看| 亚洲色图视频网| 色综合久久综合| 亚洲一区二区偷拍精品| 欧美三级电影一区| 日韩成人dvd| 欧美xxxxx牲另类人与| 国产在线精品一区二区三区不卡| 精品国产一区二区三区不卡| 国产高清久久久久| 中文字幕一区二区三区视频 | 成人综合婷婷国产精品久久免费| 国产精品久久久一区麻豆最新章节| 99精品视频中文字幕| 亚洲一区在线免费观看| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩电影在线| 精品一区二区三区免费| 国产午夜精品一区二区三区嫩草| 99国产欧美另类久久久精品| 亚洲一区二区三区精品在线| 欧美乱妇23p| 国产精品香蕉一区二区三区| 国产精品动漫网站| 欧美羞羞免费网站| 欧洲精品中文字幕| 韩国视频一区二区| 欧美大片国产精品| 精品一区二区三区在线视频| 欧美日韩五月天| 亚洲精品老司机| 国产在线不卡一区| 欧美日韩国产乱码电影| 中文在线一区二区| 欧美日韩不卡在线| 国产精品一区二区三区网站| 亚洲天堂2014| 欧美一级午夜免费电影| 岛国一区二区在线观看| 午夜精品久久久久久久久久久| 久久久久久99久久久精品网站| 欧美专区在线观看一区| 国产一区二区女| 亚洲成人一区二区| 中文字幕av免费专区久久| 欧美美女直播网站| 91在线国产福利| 蜜桃在线一区二区三区| 亚洲人被黑人高潮完整版| www精品美女久久久tv| 欧美视频自拍偷拍| 成人午夜视频在线观看| 日本女人一区二区三区| 亚洲视频1区2区| 久久久av毛片精品|