1.2 AS1 與 Java 通信
Action Script 1
var SERVER_PORT = 10086; var SERVER_IP = "127.0.0.1"; var conn = new XMLSocket(); conn.connect(SERVER_IP,SERVER_PORT); conn.onConnect = socketConnect; conn.onData = socketData; function socketConnect(success){ trace("connect"+success); if(success){ this.send("hello world\r"); } } function socketData(src){ trace(src); }
接觸了相對生疏的Java后現(xiàn)在回到AS,感覺就是爽,嘿嘿 前三行定義了三個(gè)變量,由于as1沒有強(qiáng)制類型,所以千萬別加上類型修飾符啊,反而會(huì)出錯(cuò),請注意。 conn.connect(SERVER_IP,SERVER_PORT);連接到socket的服務(wù)器。 如果連接成功 Java中的 ServerSocket.accept();會(huì)返回一個(gè)對象,并向下執(zhí)行。 as的連接成功呢則觸發(fā)了socketConnect(success)的事件,并且把true的參數(shù)傳如函數(shù)。當(dāng)然連不到就是false了。 成功后就會(huì)發(fā)送一個(gè)"hello world\r"的字符串,"\r"是回車符,因?yàn)镴ava里我用的是readLine();所以需要看到行的結(jié)束。 當(dāng)有數(shù)據(jù)進(jìn)來的時(shí)候呢就會(huì)出發(fā)socketData函數(shù)了,這里把信息輸出。 好了用as1的朋友到此已經(jīng)成功與Java程序通訊了。
1.3 AS2 與 Java 通信
Action Script 2
var SERVER_PORT:Number = 10086; var SERVER_IP:String = "127.0.0.1"; var conn:XMLSocket = new XMLSocket(); conn.connect(SERVER_IP,SERVER_PORT); conn.onConnect = socketConnect; conn.onData = socketData; function socketConnect(success:Boolean){ trace("connect"+success); if(success){ this.send("hello world\r"); } } function socketData(src:String){ trace(src); }
以上是fla版,和as1唯一的區(qū)別就是有類型定義,這樣做無論是時(shí)間執(zhí)行效率還是空間執(zhí)行效率都會(huì)有明顯提高。 接下去看看真正的Action Script 2代碼,將以下代碼保存成Socket.as文件,和fla文件放在一起。
class Socket extends XMLSocket{ public function Socket(){ super(); } public function onConnect(success:Boolean){ trace("connect"+success); if (success){ this.send("hello world\r"); } } public function onData(src:String){ trace(src); } }
fla里在幀上寫
var SERVER_PORT:Number = 10086; var SERVER_IP:String = "127.0.0.1"; var conn:Socket = new Socket(); conn.connect(SERVER_IP,SERVER_PORT);
這才是真正的as2,當(dāng)然你可以更好的修改Socket,讓他符合Server的要求,比如在類里加上一個(gè)常量,并寫入符合Server要求的方法。
public var msg:String = ""; public function write(src){ msg += src; } public function flush(){ this.send(msg+"\r"); msg = ""; }
這樣在fla里發(fā)送的方式就改為
conn.write("hello world"); conn.flush();
這樣是不是又規(guī)范又符合Java的要求了呢?我只是舉是一個(gè)簡單例子,你可以按要求自己再修改。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 Flash P2P 通信技巧(AS-Java-AS) [1] 下一頁 Flash P2P 通信技巧(AS-Java-AS) [3]
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|