forked from: flash on 2011-9-13

by ohisama
♥0 | Line 125 | Modified 2013-02-01 11:49:21 | MIT License
play

ActionScript3 source code

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

// forked from brile1025's flash on 2011-9-13
package 
{
    import flash.net.NetStream;
    import flash.net.NetConnection;
    import flash.net.SharedObject;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.system.Security;
    import flash.system.SecurityPanel;
    import flash.media.SoundTransform;
    import flash.net.ObjectEncoding;
    public class Pen extends Sprite
    {
        private var nc:NetConnection;
        private var ns:NetStream;
        private var dragging:Boolean = false;
        private var so:SharedObject;
        private var pen:Sprite;
        public function Pen()
        {
            pen = new Sprite();
            pen.graphics.beginFill(0x888888);
            pen.graphics.drawCircle(0,0,30);
            pen.graphics.endFill();
            pen.addEventListener(MouseEvent.MOUSE_DOWN,startMove);
            pen.addEventListener(MouseEvent.MOUSE_UP,stopMove);
            addChild(pen);
            nc = new NetConnection();
            nc.client = new CustomClient();
            nc.objectEncoding = ObjectEncoding.AMF0;
            nc.connect("rtmp://49.212.96.243/oflaDemo");
            nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
            nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
            pen.addEventListener(MouseEvent.MOUSE_DOWN,on_MouseDown);
            pen.addEventListener(MouseEvent.MOUSE_UP,on_MouseUp);
            pen.addEventListener(MouseEvent.MOUSE_MOVE,on_MouseMove);
            init();
        }
        private function onNetStatus(evt:NetStatusEvent):void 
        {
            trace(evt.info.code);
            switch(evt.info.code) 
            {
            case "NetConnection.Connect.Success":
                so = SharedObject.getRemote("pen", nc.uri, false);
                if( so )
                {
                    so.addEventListener( SyncEvent.SYNC ,function( evt:SyncEvent ):void
                    {
                        if( evt.target.data["penPosition"])
                        {
                            if(dragging != true)
                            {
                                graphics.lineTo(pen.x, pen.y);
                            }
                            pen.x = so.data.penPosition.x;
                            pen.y = so.data.penPosition.y;
                        }
                        so.setProperty("penPosition", {x: pen.x, y: pen.y} );
                    });
                    so.connect(nc);
                }
            break;
            case "NetConnection.Connect.Closed":
            break;
            case "NetConnection.Connect.Failed":
            break;
            case "NetConnection.Connect.Rejected":
            break;
            default:
            }
        }
        private function init() : void 
        {
            graphics.lineStyle(3, 0x000000, 0.5, true);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, on_MouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, on_MouseUp);
        }
        private function onSecurityError(evt:SecurityErrorEvent):void 
        {
        }
        private function startMove(ev:Event):void
        {
            dragging = true;
        }
        private function stopMove(ev:Event):void
        {
            dragging = false;
        }
        private function on_MouseDown(event:MouseEvent):void 
        {
            stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
        }
        private function on_MouseUp(event:MouseEvent):void 
        {
            graphics.moveTo(mouseX, mouseY);
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
        }
        private function on_MouseMove(event:MouseEvent):void 
        {
            pen.x = mouseX;
            pen.y = mouseY;
            if( dragging == true )
            {
                graphics.lineTo(pen.x, pen.y);
                so.setProperty("penPosition", {x: pen.x, y: pen.y} );
            }
        }
    }
}
class CustomClient 
{
    public function onBWDone():void 
    {
        trace("onBWDone");
    }
    public function onMetaData(infoObj:Object):void 
    {
        trace("onMetaData");
    }
    public function onPlayStatus(infoObj:Object):void 
    {
        trace("playStatus");
    }
}