0

C#2.0+AS3.0 – XMLSocketCommand

(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から呼び出しているのでコード読

XMLSocket Command

コマンド受信してからの処理が結構綺麗に書けるようになってる

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すればいい。

Read more

0

AS3 – EventDispatcherクラスの使い方

ActionScript3.0から、「ボタンを押した」とか「XMLSocketを受信した」の様なイベントを登録・実行するしくみとしてEventDispatcherというのが使われるようになった。addEventListener(MouseEvent.CLICK, onClick); しておくと、文字通りイベントがDispatch(発行)されるアレの事。

で、今C#用のXMLSocketServerクラスの上で動くFlashとC#を接続するコマンドメッセージ系を実装してて、それのFlash側のラッパーのコマンド受信イベント等をEventDispatcherで実装してaddEventListenerできる様にしたかったので、調べてサンプルを作ってみた。

■EventDispatcherサンプルのソースコード

EventDispatcherTest (AS3 / FlashCS3)

■参考サイト

上から順に読んだらわかりやすいと思う。

akihiro kamijo: EventDispatcher クラス

akihiro kamijo: カスタムイベントのディスパッチ

feb19.jp blog – AS3でEventDispatcherを使う

■EventDispatcherサンプルの動作

今回はtrace()に出力するだけ。毎フレーム、 framecount:フレーム番号 をtrace出力する。

FrameEvent.ON_COUNTFRAME イベントに関数を登録しておくと、10フレーム毎に登録しておいた関数が呼び出される。

イベントを受け取った関数は”receive dispatched Event!: フレーム番号” とtrace出力する。

サンプルを動かすとこうなる

framecount:1

framecount:2

framecount:3

framecount:4

framecount:5

framecount:6

framecount:7

framecount:8

framecount:9

framecount:10

receive dispatched Event!:10

framecount:11

framecount:12

framecount:13

framecount:14

framecount:15

framecount:16

framecount:17

framecount:18

framecount:19

framecount:20

receive dispatched Event!:20

framecount:21

framecount:22

(ずっと続く)

Read more

0

C# – XMLSocketServer Class

Org.Shokai.Net.XMLSocket

を作ったよ!あとついでにAS3でのXMLSocketクライアントのサンプルものせておく。

■これは何?

FlashのXMLSocketクライアントを受けるためのC#用のサーバークラス。

Threadの事を考えないで、簡単に使えるようにしてある。同時に複数クライアント受け入れ可能。

XML Parserは内蔵していないので、受け取ったデータは

s.h.log: C#でRSSリーダを作ってみるテスト

を参考にしてParseして欲しい

■XMLSocketって何?

FlashはAS3から普通のSocketが使えるようになって、バイナリデータを送ったりするのが簡単になったんだけど

昔からXMLSocketというのがあってよく使われていた。

まあ結局 ‘\0’ を末尾に付けたただの、文字列でXMLを送るSocketなんだけど。

■サンプル

Flash側 (Flash CS3 / AS3.0)

C#側 (VisutalStudio2005 / C#2.0)

XMLSocket

あと、最近FlashDevelopをAS3エディタとして使い始めたんだけど凄く良い。

■使い方

基本的にKY(コード嫁)だけど、やっぱ自分用にメモ。

この辺を読み込んでおく

usingOrg.Shokai.Net.XMLSocket;

usingSystem.Net;

usingSystem.Net.Sockets;

起動前の準備。同時接続数などを設定する。

xmlSocketServer=newXMLSocketServer();

xmlSocketServer.MaxClients=5;

Read more

0

1981s

1981年生まれとか、年齢が上すぎてよくわかんないんだけど

shokaiの日記 – 1981s

とりあえずblogが増えた。

0

買った本について書いてないのが悪い

インプットが最近少ないなあ、と思ってたけど、そうではなくてblogを書く量が足りていないんじゃないかという事に思い至った。

本とか。買ったのをblogに書いていないもの:ユーザーイリュージョン、+Gainer、ソシュールと言語学、AXIS12月号、フィレンツェの石、 Making Things Talk、行動主義ーレム・コールハースドキュメント、Processing本、キルンピープル、貨幣発行自由化論、 Adobe AIR完全解説、Microsoft Silverlight完全解説、Self-ReferenceEngine、PICマイコンでつくるインドア・プレーン、みんなで作ろうインドア・プレーン、Me++、図解 つくる電子回路、精神の生態学、精神と自然

この辺について、後で書く。