亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

Flash AS3教程:ApplySocket類

2020-07-17 13:17:40
字體:
來源:轉載
供稿:網友
前面學習了Flash AS3教程:運算符,今天學習的ApplySocket類,這個類是對socket應用就行了系統化封裝,并且考慮了很多因素,整合出來的一套,較為完善的flash程序部分socket解決方案
比如:一些socket服務端,不一定你send過去一條,他馬上就會轉發,可能會有延時,或者數據堆在一起等現象,而有寫socket服務端,在發送數據的時候,會有一些附加碼等,這樣不利于取出真實數據
該類除了普通的用法,就是對上述假設情況整合了一套解決方案,雖不是很完善,但是能解決大部分問題,至少我碰到過的問題,用這個類應該可以輕松搞定,并且可以適合更復雜的

另外光看講解,可能不大懂,提供了什么解決方案,來解決上面這些問題,因此,麻煩大家賴著性子,先過一到代碼,然后在看后面的用法

index.base.net.ApplySocket類:
對socket進行封裝,并且提供多種socket解決方案

構造函數:
public function ApplySocket(_isSide:Boolean = false,_datatype:String = "String")
第一參數,是否使用包邊,對數據進行處理,詳細請看isSide屬性
第二參數,默認數據發布類型
如果構造函數中兩個參數都是用默認值,則該類只是一個普普通通的socket類

connect方法:
public function connect(_host:String,_port:int):void
連接遠程socket服務端
第一參數:主機地址,可以是202.89.***.***,或者www.*****.com這樣的
第二參數:連接的端口號

send方法:
public function send(...strs):void
發送數據到socket服務端
如果datatype為Object或者ArrayObject的時候,send方法傳入的參數必須大于或者等于兩個!否則會引發錯誤!

close方法:
public function close():void
關閉與遠程服務端連接

connect事件:
當連接上了之后,會調度該事件

close事件:
當socket關閉后,會調度該事件

sync事件:
當有數據需要同步的時候,會調度該事件

error事件:
當連接失敗的時候,會調度該事件

靜態常量:
public static const ARRAY:String = "Array";
public static const STRING:String = "String";
public static const OBJECT:String = "Object";
public static const ARRAY_ARRAY:String = "ArrayArray";
public static const ARRAY_OBJECT:String = "ArrayObject";
分別表示datatype的5種類型

host屬性:
public var host:String;
當connect后,會自動把主機地址記錄到該值上

port屬性:
public var port:int;
當connect后,會自動把連接端口號記錄到該值上

space屬性:
public var space:String = " ";
當send傳入2個或者2個以上參數時,采用何種值進行隔開,默認是 空格,如果將值改為"",則表示不用間隔進行隔開

ls屬性:
public var ls:String = "{";
當isSide為true的時候,放在左邊所使用的記號

rs屬性:
public var rs:String = "}";
當isSide為true的時候,放在右邊所使用的記號

connected屬性:
public var connected:Boolean;
返回socket是否已連接上

isSide屬性:
public var isSide:Boolean;
是否加上包邊處理
如果該值為true,則表示,send傳入的參數都將會用rs和ls包起來進行傳輸到socket端,當socket原版返回數據的時候,在使用正則將真正的數據取出來,并且以datatype類型返回
反之,則不做任何處理。

datatype屬性:
public var datatype:String;
發布同步事件的時候,data采用何種類型返回
String:以字符串返回,就是說傳入什么返回什么

Array:以數組返回,選擇使用Array返回的時候,isSide值必須為true,否則無法斷點找出數組,原理就是,通過使用ls rs兩個符號包起來,然后使用正則把符號中的數據提取出來,并且返回數組。如果,socket服務端,可能還會拋出其他數據給客戶端,那么采用isSide包邊處理,則socket回傳的數據,該類會自動處理,將send出去的數據原本拿下來,回傳數據不受影響

Object:以Object返回,如果send過去的數據,都是以一個變量名一個參數值來傳輸的,那么可以采用Object來接收數據,這樣的話,返回data中,直接返回send進去的第一個參數,即可獲得值(該類型不常用,一般只在特殊情況使用)

ArrayArray:以數組嵌套數組的形式返回數據,如果socket的執行效率不是很高,或者同步要求不是很高,那么客戶端send一次,未必會接收到同步事件,可能會堆積在一起,一起發送到客戶端,這個時候,就可以采用ArrayArray的形式,那么該類會幫你把send過去的數據,重新劃分,并且以一個數組為一個send數據的形式返回,很利于做連連看,對對碰類似同步不是很即時,很多個動作可以堆積到一起來發送

ArrayObject:以數組嵌套Object的形式返回數據,不過多說,只不過是Array加上Object的符合模式而已(該類型也不常用)

Object與ArrayObject,很適合用在群聊天室,比如send("sunbright","大家好{哈 哈}");那么即時你在說話的內容加了很多怪怪符號,比如加上分隔符,空格等等,因為Object的解析原理是,拿出第一個參數做為引用變量名,然后把后面的所有數據賦值給這個引用變量名來返回,所有后面的數據不管怎么樣,都是不會破壞數據內容,即得到data數據后只要返回data的sunbright值,即可得到說話內容,不會因為格式錯誤,而把說話的內容有所改變

該類的作用在datatype屬性中,講了很多東西
下面講講應用:
該類的關鍵就在于isSide和datatype兩個值,
如果isSide為true,那么就等于啟用了數據包邊處理,那么當你調用send方法傳入某些參數,只要socket方做到的是,傳進去什么他返回給你什么,那么通過同步事件,又會自動把處理過的數據,拿出來,做到數據的準確性,不會因為傳了很多參數,有時候會紊亂。

而當datatype的屬性改變后:
返回給你的數據,就做了一些處理,這樣程序拿到最終數據的時候,根本不用處理,就可以直接使用,因為該類已經把需要解決的問題,搞定了
比如數據類型是ArrayArray的時候,請看下面的例子:
下面是一個同步的例子,接收到的數據類型是ArrayArray,拿到數據之后for循環一下,把該放的數據,放到相應位置,則完成同步。程序大大簡化了,不會我們拿到數據了還要處理,如果是第一次玩socket的,肯定還會碰到很多怪怪問題,比如數據不對,拿出來的數據有問題,還要進行分段處理什么的

CODE:
private function syncFun(e:ApplySocketEvent):void{
var tmpAr:Array = e.data as Array;
for(var i:int = 0; i < tmpAr.length; i ){
var ar:Array = tmpAr[i];
var _index:String = ar[1];
if(_index != index && (has(_index) || ar[0] == "create")){
switch(ar[0]){
case "create":
createTank(_index);
break;
case "move":
var moveStr:String = ar[2];
var moveAr:Array = moveStr.split("");
get(_index).move(expBoo(moveAr[0]),expBoo(moveAr[1]),expBoo(moveAr[2]),expBoo(moveAr[3]));
moveAr = null;
break;
case "bullet":
get(_index).bullet();
break;
case "shell":
get(_index).shell();
break;
case "turn":
var turnStr:String = ar[2];
var turnAr:Array = turnStr.split("");
get(_index).turn(expBoo(turnAr[0]),expBoo(turnAr[1]));
break;
}
}
ar = null;
}
tmpAr = null;
}
如果沒看懂,還有蝦米問題,就跟貼吧。。。

上一頁12 下一頁 閱讀全文
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产suv精品一区二区| 欧美激情亚洲综合一区| 久久久久久久久久国产精品| 欧洲成人免费aa| 久久久噜噜噜久久久| 91av成人在线| 国产亚洲精品成人av久久ww| 亚洲欧美国产精品久久久久久久| 九九久久久久99精品| 亚洲国产天堂久久综合网| 午夜精品一区二区三区在线视频| 精品国内产的精品视频在线观看| 97av视频在线| 26uuu另类亚洲欧美日本老年| 欧美精品videossex88| 欧美大片免费观看在线观看网站推荐| 日本精品在线视频| 亚洲免费一在线| 久久久极品av| 成人高清视频观看www| 日韩欧美成人精品| 一区二区在线视频播放| 国产91精品不卡视频| 欧美激情va永久在线播放| 狠狠综合久久av一区二区小说| 欧美激情亚洲国产| 国产亚洲欧美另类中文| 亚洲美女av网站| 久久精品一本久久99精品| 国产精品亚发布| 91免费的视频在线播放| 精品国产一区二区三区四区在线观看| 日韩精品在线看| 日韩中文视频免费在线观看| 91九色精品视频| 日本精品久久久久久久| 日韩麻豆第一页| 亚洲精品在线91| 中文字幕欧美专区| 欧美激情免费看| 久久久噜噜噜久久中文字免| 欧美色播在线播放| 国产精品久久久久av免费| www.亚洲人.com| 神马国产精品影院av| 激情懂色av一区av二区av| 国产欧美精品一区二区三区介绍| 青青在线视频一区二区三区| 日韩网站在线观看| 狠狠色噜噜狠狠狠狠97| 欧美日韩精品在线视频| 国产主播喷水一区二区| 久久乐国产精品| 欧美日韩国产区| 日韩高清免费观看| 色七七影院综合| 色婷婷综合久久久久| 欧美日本高清一区| 亚洲一区二区久久| 欧美一二三视频| 亚洲国产日韩欧美在线图片| 在线免费看av不卡| 国产成人精品日本亚洲专区61| 精品视频久久久久久久| 国产精品色悠悠| 亚洲免费伊人电影在线观看av| 亚洲第一网中文字幕| 日本不卡免费高清视频| 亚洲精品福利在线| 成人久久久久爱| 久久久天堂国产精品女人| 成人激情黄色网| 97超级碰碰人国产在线观看| 色噜噜久久综合伊人一本| 国产亚洲成av人片在线观看桃| 国产日韩在线视频| 91亚洲国产成人精品性色| 国产精品久久激情| 自拍亚洲一区欧美另类| 欧美老少做受xxxx高潮| 精品网站999www| 91理论片午午论夜理片久久| 欧美性videos高清精品| 黄色成人av在线| 精品毛片三在线观看| 国产精品一区二区久久久| 亚洲国产精品久久久久| 欧美激情欧美狂野欧美精品| 日韩福利伦理影院免费| 国产欧美日韩专区发布| 亚洲剧情一区二区| 九九久久国产精品| 中文字幕久热精品在线视频| 久久久久久久国产精品| 亚洲综合在线中文字幕| 国产91色在线免费| 欧美老少做受xxxx高潮| 亚洲第一精品电影| 26uuu亚洲国产精品| 欧美丰满少妇xxxxx| 欧美丰满老妇厨房牲生活| 久久99精品久久久久久青青91| 国产成人精品一区二区在线| 中文字幕亚洲自拍| 欧美性视频精品| 韩国19禁主播vip福利视频| 欧美在线激情网| 国产精品成人观看视频国产奇米| 日韩精品在线私人| 国产成人综合久久| 中文字幕少妇一区二区三区| 中文字幕在线成人| 色综合久久88色综合天天看泰| 91午夜理伦私人影院| 亚洲色图五月天| 中文字幕av一区二区三区谷原希美| 亚洲一区av在线播放| 最近2019中文字幕mv免费看| 91免费综合在线| 久久99亚洲精品| 高清欧美性猛交| 亚洲精品久久在线| 亚洲精品videossex少妇| 欧美一区二区三区四区在线| 91亚洲国产成人久久精品网站| 久久精品中文字幕电影| 久久噜噜噜精品国产亚洲综合| 亚洲激情自拍图| zzijzzij亚洲日本成熟少妇| 亚洲日本中文字幕免费在线不卡| 亚洲最大av在线| 日韩在线欧美在线| 久久免费国产视频| 91精品视频播放| 日本一区二区不卡| 国内精品400部情侣激情| 国产成人综合一区二区三区| 成人免费视频网址| 青青久久av北条麻妃海外网| 亚洲精品一区二区三区不| 97人人模人人爽人人喊中文字| 77777亚洲午夜久久多人| 美女精品视频一区| 日韩欧美999| 久久久女女女女999久久| 亚洲第一综合天堂另类专| 亚洲va欧美va国产综合久久| 国产亚洲精品一区二555| 亚洲香蕉av在线一区二区三区| 国产精品视频在线观看| 国产精品视频午夜| 久热精品视频在线观看一区| 久久免费高清视频| 亚洲最大成人网色| 欧美肥老太性生活视频| 国产亚洲欧美日韩一区二区| 久久久亚洲影院你懂的| 欧美极品少妇全裸体| 欧美自拍大量在线观看| 国产在线精品播放| 色偷偷偷综合中文字幕;dd| 国产视频亚洲精品| 亚洲电影第1页| 日韩成人在线视频观看|