forked from: flash on 2011-9-13
♥0 |
Line 125 |
Modified 2013-02-01 11:49:21 |
MIT License
archived:2017-03-30 10:26:40
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");
}
}