`
wangleifire
  • 浏览: 509011 次
  • 性别: 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 ;)

相关推荐

    交互式电子白板最常见的功能

    ### 交互式电子白板的核心功能详解 #### 一、书写功能 交互式电子白板最基础也是最重要的功能之一便是书写功能。用户可以利用电子笔或其他书写工具在电子白板上进行自由书写与标注,这一功能极大地提高了教学与...

    .net 实现网络电子白板、课件功能

    电子白板和课件功能是在线教学系统中的必备功能,本文就介绍如何基于OMCS快速实现电子白板的基础功能,以及课件功能:上传课件、打开课件、课件翻页、课件同步、删除课件等高级功能。 本文的应用场景是这样的: 一...

    电子白板软件/电子白板/白板软件/互动电子白板软件

    可以随意更改功能点,软件功能丰富,操作简单,界面友好,支持标注,白板,素材库(图片及flash),历史回放,手写输入,屏幕录像,圆规,三角尺,聚光灯,拉幕等常用功能

    电子白板源程序.rar

    电子白板,作为一种现代化的交互式设备,已经在教育、商务、会议、培训等领域广泛应用。它集成了投影、书写、演示等多种功能,极大地提升了沟通与协作的效率。本文将深入探讨电子白板的核心技术、工作原理以及常见...

    C#的电子白板功能源码Whiteboard

    用C#进行电子白板开发,可以实现网络电子白板传送,实现网络教学功能。

    WhiteBoard_电子白板_

    在数字化教学、远程协作和商务演示等领域,电子白板(WhiteBoard)已经成为不可或缺的工具。它以其强大的交互性和灵活性,极大地提升了沟通与合作的效率。本文将深入探讨电子白板的核心功能、工作原理以及在实际场景...

    教学设计电子白板

    【教学设计电子白板】是一种专门用于课堂教学的高科技工具,它极大地丰富了教学手段,提升了课堂互动性。这款软件——EduBoard电子白板软件V2.2绿色版,是教师们进行现代化教学的重要助手。 电子白板的核心功能在于...

    Winform电子白板扩展版本

    "Winform电子白板扩展版本"是一个基于C#编程语言的项目,主要目的是增强Windows Forms应用程序中的绘图功能。在传统的Winform应用中,我们通常使用控件如PictureBox或Panel来实现基本的画布功能,但这样的功能往往...

    基于T.120协议电子白板的实现方案

    6. **兼容性和扩展性**:确保电子白板与其他会议电视系统的兼容性,并预留接口方便未来的扩展。 #### 五、结论 综上所述,基于T.120协议的电子白板实现方案不仅能够满足现代会议电视系统的需求,还能提供高效、...

    超级电子白板 屏幕绘图

    电子白板作为一种先进的计算机应用程序,已经广泛应用于各种场景,包括幻灯片演示、课件教学以及软件演示等。它旨在提升用户的讲解体验,使得通过鼠标在屏幕上进行注解和说明变得更加便捷高效。本文将深入探讨电子...

    中国电子白板行业市场研究报告

    电子白板作为一种高科技交互式设备,其核心功能在于提供数字化的书写和展示平台。报告的第一章阐述了电子白板的基本定义,强调其在教育、商务等领域的广泛应用。电子白板的优势在于提高信息传递效率,增强互动性,...

    变通电子白板的应用方案

    总的来说,交互式电子白板,如变通第三代电子白板和亿博电子白板,已经成为提升教学质量,激发学生学习积极性的重要工具。它们不仅改变了教学方式,也为构建信息化、互动化的教育环境提供了强大的技术支持。随着科技...

    电子白板的Java源代码

    电子白板是现代教育、会议和远程协作中常用的一种工具,它允许用户通过图形...通过学习和分析这些源代码,不仅可以深入了解Java技术,还能提升对电子白板软件工作原理的认识,对于学习和实践软件开发具有很高的价值。

    视频会议所用的电子白板功能

    视频会议所用的电子白板功能。本程序在 Windows XP、Visual C++ 6.0 环境下编译通过,但需要rtcdll.dll文件(一般在Windows系统安装目录下的system32文件夹中)。另外,需要摄像头和麦克风等设备。

    天士博交互式电子白板培训讲义

    《天士博交互式电子白板培训讲义》是一份专为用户提供的详细使用手册,旨在帮助用户深入了解和熟练操作天士博品牌的交互式电子白板。这份讲义涵盖了4、5系列的产品,包含了丰富的技术知识和实际操作指导,旨在提升...

    IQBoard_电子白板

    IQBoard电子白板是一款专为教育和商务领域设计的交互式智能白板,它结合了先进的触控技术、多媒体教学工具和高效的会议管理功能。在本培训手册中,我们将全面了解这款产品的各个方面,包括硬件安装、设备连接、驱动...

    电子白板(C#)

    在IT行业中,电子白板是一种广泛应用的技术,尤其在远程协作、教育、会议和设计领域。本文将深入探讨基于C#实现电子白板的相关知识点,并结合提供的文件名进行解析。 首先,电子白板的核心功能是实时共享绘图内容。...

    qt写的简单的电子白板程序

    总结来说,这个“qt写的简单的电子白板程序”是一个理想的起点,无论是对于想要学习Qt的初学者,还是希望深入理解GUI编程和事件处理的开发者。通过阅读和分析源代码,可以了解到Qt的图形系统、信号与槽机制以及C++在...

    天士博电子白板驱动 v4.6 免费版

    天士博电子白板驱动是一款的电子白板驱动安装程序。天士博电子白板产品可以用于教学演示、远程视频会议等场景,功能强大!用户在使用天士博电子白板产品设备之前,需要在电脑端安装这款驱动软件才能够正常体验天士博...

Global site tag (gtag.js) - Google Analytics