(2008/12/2追記)XMLSocketServer最新版はbitbucketにあります。.NET用のXMLSocketClientも実装しました
前に作ったAS2.0用のこれ → s.h.log: C#に埋め込んだFlashと通信するライブラリ
のかわりに、最近AS3をメインに使っているので、C#2.0とFlash(AS3.0)間でメッセージをやりとりするための「XMLSocketCommand」というものを作った。
両者からオブジェクトをXMLにして送って、もう片方で受け取ったらまたオブジェクトに戻す事が簡単にできるC#とActionScript用のクラス群と、そのサンプルプロジェクトを用意したので公開しておきます。
■ソースコード&サンプルプロジェクト
・AS3.0 sample+source code (FlashCS3), archive
・C#2.0 sample+source code (VisualStudio2005), archive
■サンプルプロジェクトの中身
こんなもの。詳しくは中の、それぞれForm1.csとCommandTest.asから呼び出しているのでコード読
コマンド受信してからの処理が結構綺麗に書けるようになってる
publicfunctioncmd_onRecv(e:CommandEvent){
trace(“Receive:”+e.command.toString());//受信したコマンド
switch(e.command.name){
case”zanmai”:
trace(“今年はざんまいに”+e.command.value+”回行く!”);
break;
case”kazusuke”:
trace(“かず助にも”+e.command.value+”回行きたい”);
break;
default:
trace(“知らないコマンドが来た”);
break;
}
}
C#の方は、前に作ったC#用のXMLSocketServerクラスをラップした、Org.Shokai.Net.XMLSocket.Commanderというクラスが全部やってくれる。
ASの方は、XMLSocketを継承したCommanderクラスが全部やってくれる。
AS,C#両方ともそれぞれ持っているCommandというクラスにparseXML()、toXML()、toXMLString()というメソッドがあって、そこでオブジェクト/XMLの変換方法を定義している。
今はnameとvalueの2つの値だけをやりとりする様になっているだけだが、もっと複雑なデータをやりとりしたければ自分でCommandを継承してparseXML()、toXML()、toXMLString()をoverrideすればいい。