flash on 2011-2-27

by tepe
...
@author naoto koshikawa
♥0 | Line 63 | Modified 2011-02-28 13:49:10 | MIT License
play

ActionScript3 source code

/**
 * Copyright tepe ( http://wonderfl.net/user/tepe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/csVD
 */

package  
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import net.user1.reactor.IClient;
    import net.user1.reactor.Reactor;
    import net.user1.reactor.ReactorEvent;
    import net.user1.reactor.Room;
    import net.user1.reactor.RoomEvent;
 

    public class TryUnion1 extends Sprite
    {

        private var _reactor:Reactor;
        private var _room:Room;
        private var color:uint;
        

        public function TryUnion1() {
            color = Math.random()*0xffffff;
            connect();
        }
 
        private function connect():void  {
            _reactor = new Reactor();//インスタンス作成
            _reactor.addEventListener( ReactorEvent.READY, _reactor_readyHandler);//接続完了イベント
            //_reactor.connect("localhost",9100);
            _reactor.connect("tryunion.com", 9100);// Union Serverへ接続します。
        }
        //入室フェーズ
        private function join():void {
            _room = _reactor.getRoomManager().createRoom("test222");//ルーム作成
            _room.addEventListener(RoomEvent.JOIN, _room_joinHandler);//ルーム入室イベント
            _room.addMessageListener("shared", _room_sharedHandler);//"shared"メッセージ受信イベント
            _room.join();
        }
        
        //入室後の設定
        private function activate():void {
            stage.addEventListener( MouseEvent.CLICK, stage_mouseClickHandler );
        }
 
        private function _reactor_readyHandler(event:ReactorEvent):void {
            join();
        }
 
        //入室イベント
        private function _room_joinHandler(event:RoomEvent):void {
            activate();
        }

        //メッセージ受信
        private function _room_sharedHandler(
                fromClient:IClient, color:uint,
                sharedX:Number, sharedY:Number):void
        {
            graphics.beginFill(color);
            graphics.drawCircle(sharedX, sharedY, 10);//円描画
 
            var textField:TextField = new TextField();
            textField.autoSize = TextFieldAutoSize.LEFT;
            textField.text = fromClient.getClientID();//クライアントID
            textField.x = sharedX;
            textField.y = sharedY;
            textField.mouseEnabled = false;
            addChild(textField);
        }
 
        //メッセージ送信
        private function stage_mouseClickHandler(event:MouseEvent):void
        {
            // Roomに色とマウスのx座標、y座標を引数とした shared という名の
            // メッセージを送信します
            _room.sendMessage( "shared", true, null, //メッセージ,エコー,内容
                color,//カラー
                event.stageX, event.stageY//位置
            );
        }
    }
}