home > 2002年07月 アーカイブ

記事全ての最大/最小化切り替え

2002/07/17

* FlashCommunicationServerMXとマイクを使用したサンプル例

<このサンプルについて> キャラクターが音に反応して動く音声チャットです。 Flash Communication Server MX(以下FlashCom)を用いたマルチユーザーコンテンツのサンプルとして制作しました。(FlashComのレビューはこちら) PCにマイクを接続して下さい。マイクが無くてもチャットを聞く(ながめる?)事はできます。 <遊び方> 1) 「部屋の名前」「あなたの名前」に適当な名前を入力します。そのままでも構いません。 2) 接続ボタンでサーバーに接続します。 3) ログインするキャラクターをクリックして選択します。 4) カメラとマイクにアクセスしても良いか訪ねられた場合は「許可」を押してください。 5) マイクに向かって何かしゃべるとキャラクターが反応します。 キャラクターから抜ける(ログアウト)場合は再び自分のキャラクターをクリックして下さい。 チャットを抜けたり、他の名前で入りなおしたい場合は切断ボタンを押してください。 <技術的考察> flashMXの新機能であるマイクを用いてみました。音量に対応させてキャラクターを動かしています。 音声はFlashComを通じて同じ部屋にいる全員にストリーミングとして送られます。 どうやらストリーミングからは音量を得る事ができないようなので、数フレームに一度、 自分のマイクから得た音量などをFlashComを通じて全員に配信しています。 ログイン、ログアウトなどのユーザー管理にサーバサイドスクリプトも使用しています。 XMLベースでの通信であるFACEsサーバと比較すると、直接メソッドをサーバ-クライアント間で送れたり、 全体で共有の変数(SharedObject)を使えたりとかなりスクリプトが組みやすいです。FlashComはビデオや音声を扱えることばかりクローズアップされますが、 その他の面でも優れていると思います。 問題は価格面でしょうか…。 2002/07/17 FACEsいまい クライアント側flaファイル   サーバー側actionScriptファイル 米マクロメディアFlashComページ(トライアル版のダウンロードもできます。)

2002/07/10

* FACEs Connector (version 0.03) について

概要 FACEs Connector は、FACEsサーバとのやり取りをコンポーネント化することによって、XMLSocket接続に関する煩雑な手続きを簡便化しようという試みです。ユーザーはXMLをほとんど意識することなく、FACEsサーバとのやり取りを実現することができます。今回、FlashMXコンポーネントの有益性の検証も含めて制作しました。まだまだ不完全ですが、不具合、洗練の余地があれば教えていただければ幸いです。 サンプル flaファイル(zip形式)更新履歴ver 0.03 (2002.09/02) : registFuncを2度以上登録すると、前回の登録が全て消されてしまうバグの修正 内部コードの整理、簡潔化 FACEsConnector.send_t()ファンクションの追加 ver 0.02 (2002.08/02) : registFunc時のオプション設定により、ネストされたXMLも引数として渡せるようになった。 使い方 コンポーネントパラメータ設定 ライブラリ上のFACEsConnectorをステージ上に配置します。ステージ上のFACEsConnectorに適当なインスタンス名をつけます。コンポーネントパラメータを設定します。 サーバ名FACEsサーバのアドレス ポート番号FACEsサーバのポート番号 コンテンツ名FACEs上でデータを共有する場所の名前 traceモニターMX上でプレビューするときに、XMLの流れをtraceするかしないか ノードネームに対応するファンクションの設定 FACEsサーバからXMLが返されたとき、FACEsConnectorはXMLのノードネームに対応するファンクションを実行します。ここでは、そのファンクションを定義します。 function funcName(attr){} ノードネームに対応させたいファンクションを定義します。attrにはノード内の要素名:要素がObjectオブジェクトで渡されます。FACEsConnector.registFunc()で設定することでattrにXMLオブジェクト自体を渡すことも出来ます。 XMLのノードネームと、それに対応して実行するファンクション名を関連づけてFACEsConnectorに登録ます。 funcset = { nodeName : "funcName" , nodeName : [ "funcName" , boolean ] , ... } FACEsConnector.registfunc(funcset,funcPath); nodeNameにノードネームを、funcNameに対応するファンクション名を設定してください。funcNameは文字列です。ファンクションに渡す引数をXMLobjectにする時はnodeNameの値を配列で指定して、2つ目のパラメータにtrueを指定してください。ネストされたXMLを扱いたい場合などに指定してください。ファンクションに対してXMLの要素のみをobjectとして渡す場合は、falseを指定するか、もしくは配列で指定せずfuncNameのみを指定してください。funcPathは、funcNameのあるレベルのパスです。registFunc()するパスとfuncNameのパスが同一の場合は、funcPathはthisです。 接続 FACEsConnector.connect(); コンポーネントパラメータで設定した値をもとに、FACEsサーバに接続し、さらにコンテンツ名で共通の部屋に接続します。共通の部屋に接続すると、ノードネーム'N'が返されるので、registFuncするファンクションは、実際にはかならず'N'を処理するものが必要となるでしょう。 その他のファンクション FACEsConnector.send(nodeName[,attr]) FACEsにデータを送ります。nodeNameはXMLのノードネーム、attrにはXMLの要素で、要素名:要素の値をセットにしたObjectオブジェクトを指定します。 FACEsConnector.send_t(str) FACEsConnectorに、データを送ります。引数はXMLテキストで渡します。FACEsConnector.send()と違い、ObjectをXMLに書き直す処理を省くため、高速に処理されます。処理速度が重視される場合や、単純にXMLで書いた方が簡単な場合、ネストされた複雑なXMLを送信する場合は、こちらを利用してください。 FACEsConnector.removeFunc(nodeName) ノードネームと対応するファンクションの関連を削除します。nodeNameに関連を削除したいノードネームを指定します。nodeNameに"ALL"を指定すると、すべての関連が削除されます。 FACEsConnector.close() FACEsサーバから切断します。

2002/07/10

* Macromedia Flash Communication Server MXレビュー

2002年7月9日にMacromediaからFlash Communication Server MXが正式発表になりました。ここではそのFlash Communication Server MXの概要をお伝えしたいと思います。
続きを読む »