`
wangleifire
  • 浏览: 511088 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

电子白板,呵呵,终于完成了。功能很简单,不过要扩展已经很容易了

    博客分类:
  • FLEX
阅读更多

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas 
    xmlns:mx="http://www.adobe.com/2006/mxml"
   
    >
   
    <mx:Script>
        <![CDATA[
            import org.red5.net.FMSConnection ;
            import org.red5.net.User ;
                       
            import mx.binding.utils.BindingUtils;
            import mx.managers.CursorManager;
           
           
            public var nc:NetConnection ;
            public var userinfo:User = new User ;
            public var shareURL:String = "" ;
           
            private var oX:Number ;
            private var oY:Number ;
            private var nX:Number ;
            private var nY:Number ;
            private var soChat:SharedObject ;


            private var mX:Number;
            private var mY:Number;
            private var IsDown:Boolean=false;
            [Bindable] public var _lineSize:int=3;
            [Bindable] public var _lineColor:uint=0xff0000;
           
           
            public function init():void
            {       
                      userinfo.name = "admin" ;
                      BindingUtils.bindProperty(this,"_lineSize",hs,"value");
                   BindingUtils.bindProperty(this,"_lineColor",cp,"selectedColor");
                    
                      NetConnection.defaultObjectEncoding=flash.net.ObjectEncoding.AMF3;
                      SharedObject.defaultObjectEncoding=flash.net.ObjectEncoding.AMF3;
                    
                      nc=new FMSConnection();
                      nc.addEventListener( "success", connectionSuccessHandler );
                   nc.connect(shareURL);//连接Red5服务器   
                   this.graphics.beginFill(0xffffff);
                   this.graphics.drawRect(0,0,this.width,this.height);
                   this.graphics.endFill();
                 if(this.userinfo.name=="admin")
                 {
                  myPanel.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
                  myPanel.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
                  myPanel.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
                 }
               }
               private function connectionSuccessHandler( event:Event ):void
               {
                  soChat = SharedObject.getRemote( "videoConferenceChat", nc.uri, false );
                 
                  soChat.client = this;
                     soChat.connect(nc);
               }

   
               private function onMouseDown(event:MouseEvent):void
               {   
                        IsDown = true ;
                     this.oX=myPanel.mouseX;
                        this.oY=myPanel.mouseY;
                        soChat.send("onDown",oX,oY);
               }
               private function onMouseUp(event:MouseEvent):void
               {
                       IsDown=false;
                       soChat.send("onUp");
               }
          
               private function onMouseMove(event:MouseEvent):void
               {
                       if(IsDown)
                       {
                        this.nX=myPanel.mouseX;
                           this.nY=myPanel.mouseY;
                           soChat.send("onDraw",nX,nY);
                    }
               }
           
               public function onDown(mX:Number,mY:Number):void
               {  
                        //this.graphics.lineStyle(Number(this.CBox.selectedItem),this.cpicker.selectedColor , 1);
                     trace("("+mX+","+mY+")") ;
                     this.mX=mX ;
                     this.mY=mY ;
                     //this.graphics.moveTo(mX, mY);
                     //this.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
               }
               public function onDraw(mX:Number,mY:Number):void
               {
                     // this.graphics.lineTo(mX, mY);
                           trace("("+mX+","+mY+")") ;
                           var x:Number = this.mX;
                        var y:Number = this.mY;
                        myPanel.graphics.lineStyle(_lineSize,_lineColor,1);
                        myPanel.graphics.moveTo(x,y);
                        myPanel.graphics.lineTo(mX,mY);
                        this.mX=mX;
                        this.mY=mY;
               }
               public function onUp():void
               {
                     //this.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
               }
              
               //清除白板
               public function onClear():void
               {
                     this.graphics.lineStyle(0,0,0);
                     this.graphics.beginFill(0xffffff,1);
                  this.graphics.drawRect(0,0,this.width,this.height);
                  this.graphics.endFill();
               }
              
               private function sendClear():void
               {
                      soChat.send("onClear");
               }
           
           
        ]]>
    </mx:Script>
   
<mx:Panel width="100%" height="100%">
<mx:Canvas id="myPanel" x="113.5" y="83" width="100%" height="90%" buttonMode="true" borderStyle="outset">
</mx:Canvas>
    <mx:HBox width="100%">
        <mx:Button label="清空" click="myPanel.graphics.clear();"/>
        <mx:Button label="申请"/>
        <mx:Button label="同意" enabled="false"/>
        <mx:Button label="拒绝" enabled="false"/>
    </mx:HBox>

<mx:HSlider id="hs" value="{_lineSize}"/>
<mx:ColorPicker id="cp" selectedColor="{_lineColor}"/>
</mx:Panel>
   
</mx:Canvas>

分享到:
评论
6 楼 wangleifire 2011-04-08  
kaka-pan 写道
楼主好,能否解释一下 soChat.send(...)方法,第一个参数是服务端方法吗?如果是,实现共享的话,是不是在服务端方法中再调用客户端画图方法?求解释

是回调用的,用来标记这个数据用来上移,下移,左移,右移等
5 楼 kaka-pan 2011-04-07  
楼主好,能否解释一下 soChat.send(...)方法,第一个参数是服务端方法吗?如果是,实现共享的话,是不是在服务端方法中再调用客户端画图方法?求解释
4 楼 zhimin007 2010-01-14  
您好!能否指点下楼上三位大侠的问题,非常感谢!也顺便指点下我的,要批评下一楼的,应该不是叫学姐吧,是学长!
3 楼 mutou990 2009-10-15  
老大,我也是刚学FLEX的,现在想做个白板,看到你这篇博文,真的很兴奋。
但我和1、2楼的问题一样。
文件中提示错误,一个是
“ public var userinfo:User = new User ;”
另一个为
“ nc=new FMSConnection();”
,请抽时间务必告诉我下怎么解决,拜托,多谢了!
2 楼 Silent_Eye 2009-07-28  
import org.red5.net.FMSConnection ;
import org.red5.net.User ;

这2个类哪里来的?
在下最近正在为一个电子白板头痛,有问题想请教,博主可否与在下联系?
QQ:47544130
email: zorrox@163.com
1 楼 dlnuzwh 2009-04-07  
学姐,我现在正研究flex怎样与red5通信,看了你的这篇文章,感觉很好,但是,我不知道怎样在flex里引入,red5包,我Q Q:545953801,你要是有空了,希望能帮我一下,我不会太麻烦您的
     (import org.red5.net.FMSConnection ;
            import org.red5.net.User ;)

相关推荐

Global site tag (gtag.js) - Google Analytics