.flash filename="sharedball.swf" bbox=420x440 version=9 fps=12 background=#8822DD .edittext log width=400 height=50 size=18pt color=black multiline html .put log x=0 y=0 .box bx1 width=50 height=50 color=black .action: package { import flash.display.* import flash.text.* ; import flash.events.*; import flash.net.*; public dynamic class main extends MovieClip { private function trace (s) { this.log.text+=s+"\n"; } private var obj_so : SharedObject; private var nec : NetConnection ; private var obj_s : Sprite ; private function mouseDown(evt:MouseEvent) { obj_s.startDrag(); } private function mouseReleased(evt:MouseEvent) { obj_s.stopDrag(); // change valeur SO obj_so.setProperty("x",evt.stageX) ; obj_so.setProperty("y",evt.stageY) ; // notifie le serveur du changement //obj_so.setDirty("x");//obj_so.setDirty("y"); } // Mŕj position private function onSync(e : SyncEvent) { var str:String=""; if (obj_so.data.x != null) { obj_s.x = obj_so.data.x; obj_s.y = obj_so.data.y; } // for ( var pr in e.target.data) str+=pr+": "+e.target.data[pr]+" "; // this.log.text=str; } private function onAsync(e : AsyncErrorEvent) { trace("async error:"+e.error); } public function main() { this.log.backgroundColor = 0xffccff; NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0 ; // objet déplacé par les utilisateurs trace("compilé avec swfc http://swftools.org merci Matthias"); obj_s=new Sprite(); obj_s.graphics.beginFill(0x55CC00); obj_s.graphics.drawRect(0,0,15,15); addChild(obj_s); obj_s.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) ; obj_s.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); nec=new NetConnection(); nec.connect("rtmp://localhost/SharedBall"); obj_so = SharedObject.getRemote("position", nec.uri, false); obj_so.client = this ; obj_so.addEventListener(SyncEvent.SYNC, onSync); obj_so.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsync); obj_so.connect(nec); } } } .end # action .end # .flash