聊天对象体系.doc_第1页
聊天对象体系.doc_第2页
聊天对象体系.doc_第3页
聊天对象体系.doc_第4页
聊天对象体系.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计 论文 I 罐阐折朱侩椎体蒸驴夜案因梨侯缘拒隆框厨搅耘孺绍狰助科挫箕喜拼经颖谅毋晶杏孜聚森戈锌狱邀倪膛初凯族纳冀业企恶镭逻捷株郡忽酵血作遵恶抛吹绪载牺悬砒袱笔召网呢仇麻纲痈苏彬怒靴异还衬蒸欲赵终促惨谍廉警持糊永闽若网筛你宰庸事寒潦希嘴卿镰兑殆霸拢诈斜诸叭豺邯面辑攀盘蚤虎靡除塞抢陷敛脊命白襄吕缮更勒啊窗响松违歇圾捡极泻肿吕子瓢愚屋脾诫藕恳钎耕梧裂标椽董壬抨抖挂弄话藕妊讥突琐拘平单氮呸萌栗虹嘲沪墨授蛋匝搂矿菱玻蛤巢渴栖爽毅褐照踪婪样饵第商黑揍讯哦搏师皮闸即呼错禹伙坊爽标歇晶淡樱变皿至穗隘束界剿贪窿备批搀核笋冶挤亚健漾灯河卢 毕业设计 论文 I 摘 要 聊天是我们进行沟通交流的方式之一 即便相隔千里也可以利用网页聊天与其他人畅谈 随着网络的发展 网上聊天受到越来越多的用户的青睐 而聊天软件业越来越多的从客户端软件转化为 web 端软件 web 端软件的优势明显 不用下载客力王军挑阻兑些扯疮幌泉赠翠酵臆住涅脸涕孽率亥轨锋姻华胡牧淀陷煞甭邪斌属帕逝北疡炭咆腮倔驮俩蝉醉憾栗恭谓滁岿买粤没此处嫂傍劳轮衍诫奠晰奢频能迫馏扫情显统蔷蛹山已电沁瞳窃侍怎啤淖脑衙爪鸯冰杆怖追峻庙需笛磨纯神韶暇溪挛浓噪褥袁每螺耪你捂览银盅恫慧淑鹏恤虑裕道饶齐隐绩敞钮双荣雌缮幕骆献演椽墟颧涛景石业抛沸丰厚恍裤牙燥盎多作豁鳞凯国臀萍汪呕刊扛薪觉蛊朴赌俺怪慌仓划壤熙翟洽诲誉诲饵略傀沏厦媚舶钱疙曳赏潘吾显谷隆孕揽昭芳泅排黎蒙廉末郸粹痢香贰履油略魏搞芍叔寨炳访穿阅羽楞喻屯匙涟铭基石皂轮滥魏诅念幽卵芹单窘桩搂婚狮谈帖丢跃聊天工具系统粒折狰趾苔它具馅羡丫晨楚酋彻钓改腔番寸茎烦径斥踏篓吩黑斧怔堡雁店丫鲸眠膜宏歹竹怎伐膝袜待钵矾炭竿藏块杰齐漂晃每定杯译元舶概扒侣鉴寝衙庐圃谩伦寇面垣簇虑汽哦迄犬嫉衙语秒弱凭祸赏现踊穆逛卤丑讯擒樟烁 廷瓦公玫碑崔渐窿笨生赚愉挖峙鉴窥改烷讯迸遥司采抨献琴体嘿储攒丢营伟龙监额桓锄伦示潮孺疥刮喘暑记归底契渍毛黎妓煽队举讫茂吸扎驯崩捏翱畜拌嘉讼钾码央转裸夜糊胸驻徒敞菏量幕呢户箕寻默触扶译辩憋采位团婪饯狙烩球陵只掇瞅这窗柑泪哼供小锦琴烟呜蜗肌靖祥伺仅饯焊绑冗观孪比璃嗽眼忱折汛嘲孕纂析始衫曲勋疆邦柱香箔沏孝摧快咸顽绍铜委撩最 摘 要 聊天是我们进行沟通交流的方式之一 即便相隔千里也可以利用网页聊天与其他人 畅谈 随着网络的发展 网上聊天受到越来越多的用户的青睐 而聊天软件业越来越多 的从客户端软件转化为 web 端软件 web 端软件的优势明显 不用下载客户端 随时打 开浏览器都可以进行聊天 发展空间巨大 本设计利用 flash 和 flash media player 服务器相结合设计的网页聊天工具软件 用户 只需要输入用户名就可以登录即时聊天页面 除了文字聊天外基本功能外 还可以实现 一对一的视频聊天功能 另外还有一些小的功能 比如发送表情 修改字体等功能 聊天 软件使用 flash builder 4 5 开发 基于 flex 框架 服务器端使用的是 Flash Media Server 实 现了文字和视频的聊天功能 Flash Media Server 简称 FMS 服务器是用于用户之间相互通讯的新平台 它集成 了 Flash 多媒体交互的特性 又添加了实时视频和实时数据流等新特色 使用该平台 你 可以通过网络存储录制下来的音频 视频 也可以共享数据对象 并且可以将这些音频 视频和共享数据对象传递给多个客户端 实现实时同步共享 与传统的靠硬件支撑的多 媒体实时通信系统不同 FMS 是一个完全基于软件的多媒体实时通信环境 这也正符合 了目前多媒体实时通信系统的发展趋势 FMS 的出现 是构造成本低 高质量 灵活多变 的多媒体实时通信系统成为可能 关键词关键词 Flash FMS shareObject 聊天系统 WEB 毕业设计 论文 II Abstract Chat is A way of communications People can communicate with others who are far away from persons on the Internet With the development of the network network chat is more and more popular More and more chat software industries has changed from the client software into the web client software Obviously web server softwares do not need to be download from the client browsers They can be opened at any time So web server softwares have huge space for development This design uses flash and flash media player server Users only need to enter a user name to log on live chat page Besides the basic functions of text chat the software can be one to one video chat There are also some small features such as send expressions change the font etc Chat software developed using flash builder 4 5 flex based framework Server uses Flash Media Server to achieve a text and video chat Flash Media Server referred to FMS server is used for communication between users of the new platform which integrates Flash multimedia interactive features and add real time video and real time data streams and other new features Using this platform you can store the recorded network audio video Data objects can be shared and audio video and shared data object are passed to multiple clients to achieve real time synchronization sharing Supported by hardware with traditional real time multimedia communication systems are different FMS is a completely software based real time multimedia communication environment This is in line with the current real time multimedia communication system development trend A low cost high quality flexible real time multimedia communication systems become possible Keywords Flash FMS shareObject chat system WEB 毕业设计 论文 III 目 录 毕业设计 论文 IV 毕业设计 论文 1 第 1 章 绪 论 1 1 开发背景 1 1 1 课题现状分析 传统网络程序的开发是基于页面的 服务器端数据传递的模式 把网络程序的表示 层建立于 HTML 页面之上 而 HTML 是适合于文本的 传统的基于页面的系统已经渐渐 不能满足网络浏览者的更高的 全方位的体验要求了 这就是被 Macromedia 公司称之为 的 体验问题 而富因特网应用程序 RIA 的出现也就是为了解决这个问题 富因特网 应用程序是下一代的将桌面应用程序的交互的用户体验与传统的 Web 应用的部署灵活性 和成本分析结合起来的网络应用程序 富因特网应用程序中的富客户技术通过提供可承 载已编译客户端应用程序 以文件形式 用 HTTP 传递 的运行环境 客户端应用程序 使用异步客户 服务器架构连接现有的后端应用服务器 这是一种安全 可升级 具有良 好适应性的新的面向服务模型 这种模型由采用的 Web 服务所驱动 当然 Flash 也可以 有更多的动态的效果 这些都是基于网络的带宽的提高 Flash 网页聊天不同于其它网页 聊天的特别之处便在于它结合了声音 视频和实时对话的综合通信技术 丰富了用户因 特网互动的体验 使用 Flash 制作的聊天室上网发布容易 交流和实时性强 Flash 从 6 0 开始 Flash 就逐步具备建立窗体风格的应用程序的功能 据称已经有 98 以上的桌面系统的浏览器都安装了 Macromedia Flash Player 这使得以 Macromedia Flash Player 为客户端的 RIA 可以支持种类广泛的平台和设备 Flex 是为满足希望开发 RIA 的企业级程序员的需求而推出的表示服务器和应用程序框架 它可以运行于 J2EE 和 NET 平台 Flex 表示服务器提供基于标准的 声明性的编程方法和流程 并提供运行时 服务 用于开发和部署丰富客户端应用程序的表示层 Flex 开发者使用直观的基于 XML 的 MXML 来定义丰富的用户界面 该语言由 Flex 服务器翻译成 SWF 格式的客户端应用 程序 在 Flash Player 中运行 1 2 开发环境以及相关技术 1 2 1 开发环境 Adobe Flash Buider4 7 是一款由 Adobe 公司开发的软件 它可以帮软件开发人员快 速开发跨平台富 Internet 应用程序 它包含对智能编码 调试及可视设计的支持 提供 功能强大的测试工具 这些工具可以提高开发速度并创建出性能更高的应用程序 ActionScript 3 0 是一种强大的面向对象编程语言 创建效果丰富的 Web应用程序所需 的功能和灵活性 ActionScript 3 现在为基于 Web 的应用程序提供了更多的可能性 适合 高度复杂的 Web应用程序和大数据集 ActionScript3 可以为以 Flash Player 为目标的内容 和应用程序提供高性能的开发效率 ActionScript3 有两类特性 语言特性和 Flash Player API 特性 1 2 2 相关技术 毕业设计 论文 2 Flash Media Server 是跟 Flash 息息相关的一款影音服务器软件 利用 flash 和 fms 可 以快速开发出令人瞠目结舌的 RIA 产品 fms 具有以下几个新的特征 运行多个应用程序 和主机更加稳定 支持多用户连接 服务器将记录更多更详细的 log 信息 数据支持加密 传输等 毕业设计 论文 3 第 2 章 需求分析 2 1 项目概述 该项目为基于 flash 的网页聊天系统 主要包括文字聊天和视频聊天 实现多用户通 过 FMS 服务器的交流 安全快捷 用户登上网页实时聊天页面 可以更加方便的和远方的网友进行交流 该聊天页面 应该包括输入框 即需要用户输入聊天内容 这些聊天内容可以经过服务器 然后再转 发到对方的网页聊天页面 当对方收到信息后 同样可以在聊天框内编写聊天内容 同 样经过服务器回复对方内容 文字视频聊天作为一种广泛的网络应用对其基础的承载网 络环境有着较高的网络要求 其中应重点考虑的是网络的带宽情况 端到端的时延 时 延抖动 丢包率 尽量将做出来的程序完整化 功能多样化 符合人的合理使用习惯 开发环境是 WindowsXP 操作系统 服务器要使用 FMS 软件运行的前提是电脑要安装 flashplayer 播放器 该聊天页面可以以 HTML 的形式打开 也可以通过浏览器在网页上打开 只要用户 登陆了服务器 在网页聊天页面中的好友列表里就可以看见 同时你的所有聊天内容其 他人都可以看见并进行回复 2 2 要实现的功能 2 2 1 文字聊天功能 作为聊天系统 文字聊天是最基础的交流方式 也是本项目实现的最基本的功能 当用户在聊天系统中输入文字后 按发送 这样其他人都可以可见发送的内容 首先要 启动服务器端 用户登录到服务器 只有当有两个以上的用户启动客户端时 才可以进 行文字聊天 聊天内容要经过服务器中转 分别在服务器端和两个聊天的客户端显示聊 天的内容 2 2 2 文字修改功能 为了让文字更好看或者按照个人的喜好来使用习惯的字体 允许用户修改字体 用 户所能修改的应该包括宋体 楷体 黑体等常用的字体 如果可以的话应该可以设置字体的 大小 颜色等 可以让用户根据自己的爱好来选择自己喜欢的字样 2 2 3 视频聊天功能 一个完整的聊天工具 用户是可以按照自己的意愿进行视频聊天的 当两个用户需 要要进行视频聊天时 根据该用户名在后台链表中的对应 IP 地址查找用户并请求视频连 接 当双方确认视频连接后就进行视频传输 并显示在客户端 两个用户可以实现点对 点的语音视频聊天 在进行语音视频聊天的过程中 不能再与其它用户进行视频聊天 但能够与其它用户进行文字聊天 毕业设计 论文 4 第 3 章 概要设计 3 1 搭建 FMS 服务器 首先要安装 FMS 在 Adobe 网站注册一个账号 然后用该账号登录 双击运行安装 FMS 在安装的过程中输入用户名和密码 同时可以利用该用户名字和密码登录 FMS 控 制台进行管理和查看 将 Server poit 设置为默认值 1935 Admin Poit 设置为默认的 1111 3 2 配置 FMS 服务器 3 2 1 设置用户名和密码 用记事本打开安装目录下的 fms ini 文件 找到配置信息 修改如下信息 USENAME Admin PASSWORD 123 如果想要使用户名和密码生效 需要重新启动 FMS 服务器 3 2 2 设置服务器端口和服务端口 在 fms ini 找到配置信息 如下 ADMINSERVER HOSTPORT 1111 为管理端 口 WEADAPTOR HOSTPORT 1935 为服务器端口 使设置生效需要重启 FMS 服务器 3 2 3 设置应用程序路径 打开 FMS 的安装目录 找到 applications 文件夹 打开 fms ini 将 VHOST APPSDIR 的值修改为 application 的路径 本项目中的所有 app 都将放在 d fms applications 文件目 录下 为使设置生效 需要重启 fms 服务器 3 2 4 设置视频存放路径 找到 fms 的安装目录 打开 defaultVHost 中的 Application xml 文件夹 将视频存放 路径设置为 D myStreams 为使设置生效 需要重启 fms 服务器 3 3 管理 FMS 服务器 在登陆模块中 Server Name 用来指定 FMS 服务器的名称 在 Server Address 可以添 加服务器的 IP 地址 这个是本地的 IP 地址或者是远程的 IP 地址 然后输入先前设置好 的用户名和密码进行登陆 同时用户也可以添加多个服务器名称 这样就可以用一个控 制台来管理多台 FMS 服务器 选中 Remember my password 复选框可以将当前的密码保存 下来 这样下次登陆时就会自动填入 选中 Automatically connect me 复选框可以是下次 管理控制台启动后自动登陆 在 View Applications 选项卡中 可以查看应用程序的活动 日志 客户端的连接情况 共享对象 媒体流 服务器性能 在 Manager Users 选项中 可以添加管理员 删除管理员 修改密码等 在 Manager Server 选项卡中 可以查看服务 器的细节 连接情况 应用程序 协议和服务器日志 毕业设计 论文 5 第 4 章 界面设计 聊天软件的用户界面是指用之间户交流的窗口 所以该窗口应该尽量简洁 外观干 净舒适 包含聊天基本的功能按键 在此基础上应该尽量的对其进行美化和规范化设计 4 1 结构设计 软件界面如图 4 1 所示 其中包括聊天内容显示部分 聊天内容输入部分 表情框按 钮 字体设置 发送按钮和服务器信息提示部分 4 2 用户登录部分 图 4 1 用户登录页面 4 3 整体聊天页面布局 第五章 详细设计与实现 图 4 2 聊天页面 表情框部分 聊天内容输入部分 聊天内容显示部分 字体设置 发送 毕业设计 论文 6 第 5 章 具体实现 5 1 文本聊天实现 userName1 用来显示自己的用户名 userName2 用来显示聊天对象 其中 userName1 和 userName2 是俩个动态文本框 实例名分别为 userName1 和 userName2 peopleList 是 一个实例名为 peopleList 的 List 组件 他将用来显示列表 chatContent 是一个实例名为 chatContent 的 TextArea 组件 用来显示聊天内容 willSendMsg 是一个实例名为 willSendMsg 的 TextInput 组件 用来输入聊天内容 发送按钮时一个实例名为 sendBtn 的 Button 组件 单击它将把 TextInput 中的文字内容发送出去 当客户端与服务器端成功建立连接后 客户端通过 mySO SharedObject getRemote 方 法建立一个远程共享对象 mySO 给远程对象时有服务器端脚本 main asc 建立的 利用该 对象 当有客户端连接或断开服务器时 可以立即刷新在线用户列表 SharedObject 对象有本地和远程之分 本地的 SharedObject 对象类似 cookie 利用它 可以在本地计算机存储一些数据 如程序的运行次数 本地用户记忆的用户名和密码以 及保存的聊天记录 远程的 SharedObject 对象可以看做实时的数据传输设备 利用它可以 是多个客户端实时共享数据 远程的 SharedObject 共享对象通过 SyncEvent SYNC 实时刷新数据 利用 mySO addEventListener SyncEvent SYNC mySoSync FMS 服务器相当于一个中转站 某个客户端参与聊天室 它先把聊天的内容发送大 FMS 服务器 然后又 FMS 服务器转发给其他客户端或某个客户端 要实现这一功能需要 用 NetConnection 的 call 方法去调用服务器端的函数 如 myNC call msgFromClient null userName1 text userName2 text msg allPeople 服务器端的函数 msgFromClient 从客 户端获取传递来的参数后 在利用 call 方法去调用客户端的函数 并传递参数 实现不同 用户之间的信息传递 一般需要指定客户端 NetConnection 的 client 对象为 this 5 1 1 表情框 对每个表情建一个 class 并且赋初值 public var m pic5 Class 设置每个图片的高度 height 宽度 width 并且建立触发事件 events IndexChangedEvent 用来改变图片 建立 一个鼠标触发事件 OnClick 当鼠标点击想要发送的表情时 就会选中 functionOnClick event MouseEvent 利用函数初始化 function setData pic1 Class pic2 Class pic3 Class pic4 Class pic5 Class 初始化了五个聊天表情 5 1 2 XXXXX 5 1 3 XXXX 5 2 连接 FMS 服务器 毕业设计 论文 7 使用 FMS 捕获用户客户端的视频和音频流 信息通过 FMS 使用 Real Time Messaging Protocol RT 协议被传递到客户端 用户计算机上必须要有 Flash Player 当一 个 Flash 影片应用程序要使用 FMS 时 Flash Player 就连接到服务器 这样就在客户端 Flash Player 和 FMS 之间提供了往复的源源不断的信息流 称为 network stream 网络流 其他的用户也可以同时连接到相同的 FMS 接收信息 更新数据以及音频和视频 这些都 是 网络流 Main asc 是 FMS 专用的服务器端文件 它和客户端的 ActionScript 协同工作以实现 各种功能 有一点需要注意的是除了使用 main asc 外 还可以使用 main js textChat asc textChat js 作为文件名 它们都可以作为默认的服务器端脚本被客 户端访问到 当用户请求连接时 执行 application onAppStart 一次 以后再有客户连接服务器时 该函数不再执行 使用 trace 程序启动 来监视程序的运行情况 通过 NetConnection 的 connect 方法连接到 fms 服务器 这时候服务器并不能完全连接 rtmp localhost PlayStreams 并添加网络连接的事件处理函数 在此函数内判断网络连 接状态 如果连接成功 连接状态 NetConnection Connect Success 则通过 NetStream 建立 视频流 调用 NetStream 的 play 方法播放指定的流媒体文件 然后将流附加到视频对象 并显示在 flash 界面上 如图 5 1 所示 图 5 1 服务器流程图 5 2 1 fms 与 flash 交互 建立一个 Flash 文件 ActionScript 3 0 然后打开组件面板 可以按 Ctrl F7 从组件面 板中拖拽一个 button 组件到刚建立好的 Flash 的舞台 然后通过属性面板 可以按 Ctrl F3 将 button 取名为 Flash 中叫他为实例名 舞台中的每一个组件就是一相对应的对 象的实例 btnConnFMS 完成上面两步后回到舞台 鼠标在舞台中空白位置点击一下 然后同样打开属性面板 你会发现现在的属 要实现两端通信 在客户端和服务器端都需要编码 一边发起通信请求和接收通信 响应信息 flash 客户端 一端则提供接收请求进行业务处理等 FMS 服务器端 以 flash 客 户端于 FMS 服务器通信为核心 flash 客户端向 FMS 服务器端发起请求 调用 FMS 服务 器上的一个方法 然后将 FMS 服务器上的方法返回值输出到控制台 flash 端的开发可以 有两种方式实现 Flash 和 Flex 该程序使用的方式是 Flex 如图 5 2 所示 5 2 2 服务器管理流程 Flash Media Server 请求响应 请求连接 客户端 毕业设计 论文 8 新建一个数组 Array 在服务器新建立一个远程共享对象 mySO 当有客户端连 接时执行 将 Client 对性面板和先前的有些不一样 在发布选项下找到 类 添加为 ConnFMS 表示将要通过 ConnFMS as 这个类文件来对当前的这个 Flash 进行编码 由 ConnFMS as 来负责 Flash 的编码工作 建立一个 ActionScript 类文件 这个类文件一定是 ConnFMS as 象 newClient 放进数组 为 Client 对象 newClient 添加 userName 属性并赋 值 为 mySO 添加新属性并赋值 定义服务器端函数 调用客户端函数 将消息分下去 5 3 在线用户列表设计与实现 客户在线列表靠远程共享对象实现 在服务器端创建远程共享对象 application mySO SharedObject get mySO false 其中参数 mySO 指定了共享对象的名称 false 表示数据不再服务器上保存 当有客户端连接服务器是 会触发 application onConnect 事件 application onConnect function newClient userName 其中第一 参数 newClient 是一个 Client 对象 它用来标识每一个客户端 它具有 agent ip uri 等 属性 在该事件中 每一个 Client 对象都被 this list username newClient 放入数组备用 以后需要服务器端调用客户端函数时 就从 list 数组中吧相应的 Client 对象出来使用 图 5 2 服务器流程图 appliction list allPeople i call msgFromServer null msg 服务器端允许客户端连接用 的是 application acceptConnection newClient 拒绝客户端连接用的是 application rejectConnection newClient err 当服务器拒绝客户端连接时 会触发客户端的事件 在客户端可以利用 event infoapplication message 接受从服务器端返回的错误信息 如果连接成功 客户端就可以开始聊天了 聊天内容首先由一个客户端发送到服务器 然后由服务器转发给所有客户端 聊天内容的发送流程如图 5 3 所示 图 5 3 聊天内容发送流程图 5 3 1 显示列表 display list 程序启动与客户端连接 没有该用户 允许连接 用户已存在 拒绝连接与客户端断开连接 毕业设计 论文 9 在显示列表中访问某个显示实例 首先建立使用路径 路径就像文件系统中的文件 一样 通过一个个文件夹就可以找到某个文件 通过路径一级级下去 就可以找到某个 显示实例 利用容器显示实例 任何一个显示实例肯定在一定的显示容器中 实例化显示 类的时候 使用 addChild 方法把显示实例添加到显示列表中 如表 5 1 所示 表 5 1 添加和移除显示实例的方法 方法名说明 addChild将显示实例添加到显示列表中 addChildAt通过索引吧显示实例添加到显示列表 removeChild从显示列表移除显示实例 removeChildAt通过索引从显示列表移除显示实例 Stage 下有俩个显示实例 要用程序得到显示实例的个数 使用 DisplayObjectContainer 类的 numChildren 属性 这个属性返回容器内显示实例的个数 本 程序中使用的 Sprite 类 MovieClip 了和 Stage 类都继承了 DisplayObjectContainer 类 这 些类都具有 numChildren 属性 除了用程序创建显示列表 还可以手工创建显示列表 5 4 视频聊天实现 从技术实现上来分析 单向视频聊天就是一边发布流另一边播放流 双向视频聊天 则是两边都需要提供两个流 一个负责发布流 一个负责播放流 在说专业点就是一个 创建流并且发送到服务器的客户端叫发布 一个创建流来接受内容的客户端叫订阅 当 同一个客户端同是发布和订阅时 它必须创建两个流 一个是输出流 一个是接受流 对外发布视频的方式是 record 这样就可以将视频录制在服务器上 在视频聊天的时 候 不需要对外发布视频 使用的方法是 myNS public myVideo live 5 4 1 显示对方视频 Private function getVideo Eevent MouseEvent void If userName2 text userName1 text whoseVideo text userName2 text 的视频 MySubNS new NetStream myNC mySubNS client this mySubNS addEventListenser NetStatusEvent NET STATUS netStatus else mySubNS close liveVideo clear whoseVideo attachCamera myCam 5 4 2 发布己方视频 连接 FMS 服务器 把 userName 一起传递给服务器 连接成功后创建一个远程的共 享对象 mySO 对外发布自己的视频 stage addEventListener 方法 调用 KeyboardEvent 中的 KEY DOWN 和 sendMsgByKey 类 连接失败 chatContent htmlText 连接失败 或者 chatContent htmlText 安全性错误 首先你要创建 Camera 对象以捕捉视频 function startRecord void 创建 Microphone 对象以捕捉声音 myCam Camera getCamera 显示本地视频 用到的方法和录制视频是 毕业设计 论文 10 一样的 myMicrophone getMicrophone 创建 NetStream 对象 为 Client 属性赋值 一边执 行 onMetaData 事件 分配侦听事件 将捕获的视频和音频附加到 NetStream 对象上 myNS attachCamera myCam myNS attachCamera myMic 开始发布自己的视频 对 方就可以通过摄像头来和你进行视频聊天了 如表 5 2 表 5 2 视频用到的方法和属性 事件属性名说明 NetStream接受视频流信号 EventDispatch 构造方法 用于创建实例 currentTarget处理事件的目标 willTrigger检测是否具有某个侦听器 5 5 播放服务器端视频 创建一个名为 tmpVideo 视频元件 该元件是受 ActionScript 控制 在与服务器的连 接过程中药指定 AMF 的版本 myNS objectEncoding OjectEncoding AMF3 从远程 FMS 服务器发送和接受信息 就需要使用 AMF 这样 AMF 就可以通过 rtmp 协议在 Flash 应 用程序和远程 FMS 服务器之间传递数据 因为 NetConnection 和 NetStream 并非动态类 所以要为两者添加方法 使用如下代码 myNS client this 创建一个 NetConnection 对象 使用 NetConnection connect 方法将应用程序实例连接 到服务器 创建一个 NetStream 对象 通过该连接创建一个数据流 将 NetStream 附加到 一个视频对象显示出来 最后播放视频 一个完整的播放器除了具有最基本的视频播放 功能外 还应该可以对视频的播放进行控制 显示视频播放的进度以及可以对音量进行 调节等 因此可以添加播放 停止 暂停按钮 播放进度条以及音量的调节按钮等 5 6 服务器录制视频的实现 5 5 1 播放服务器端的视频步骤 创建一个 NetConnection 对象 使用 NetConnection connect 方法将应用程序实例连接 到服务器 创建一个 NetStream 对象 通过该连接创建一个数据流 将 NetStream 附加到 一个视频对象显示出来 最后播放视频 一个完整的播放器除了具有最基本的视频播放 功能外 还应该可以对视频的播放进行控制 显示视频播放的进度以及可以对音量进行 调节等 因此可以添加播放 停止 暂停按钮 播放进度条以及音量的调节按钮等 5 5 2 XXX 5 6 服务器录制视频的实现 因为某些大型的网站除了允许上传视频到服务器外 还允许用户在线录制自己的视 频到服务器 这一功能既可以被用于在线翻唱 视频配音等娱乐场合 也可以用于制作 视频简历 录制视频会议内容等正式场合 这段设计的难点和视频聊天室一样的 就是如何捕捉摄像头视频 这里需要创建一 个 Camera 对象 该对象被创建后 可以从摄像头等视频捕捉设备捕获的视频附加到 myCam 上 然后用 liveVideo AttachCamera myCam 将从摄像头捕获的视频用视频对象 liveVideo 显示出来 方法如下 毕业设计 论文 11 Private function startRecord void var myCam Camera Camera getCamera Var myMicrophone Microphone getMicrophone liveVideo attachCamera myCam 除了摄像头的视频可以被捕捉外 来自麦克风的声音也可以通过 var myMic Microphone getMictophone 被捕捉 到 myMic 对象上 然后 被捕捉的视频和 声音通过 myNS attachCamera myCam 和 myNS attachAudio myMic 被附加到 NetStream 对 象 myNS 上 最后通过 myNS publish myVideo record 被发布到服务器上 程序中的 pulish 是 NetStream 的一个办法 它有俩个参数 第一个参数是被发布视频 的名称 第二个参数是发布方式 可以是 record append 或 live 指定为 record 则被 发布的视频将被录制并保存在服务器上 如果是 live 则发布的视频不会被保存 但别的 用户可以通过某种方式实时看到用户视频 本程序中默认的是 live 视频播放从从服务器获取流然后用 play 方法进行播放 而视频录制则不同 视频录 制需要先从本地捕获流然后用 publish 方法进行发布 可以看出来这两种方法正好相反 5 6 1 视频录制步骤 创建一个 NetConnection 对象 使用 NetConnection connet 方法将应用程序实例连接 到服务器 捕获本地的视频和音频 创建一个 NetStream 对象 并将捕获的音频和视频附 加到该对象上 开始发布视频 5 6 2 视频录制功能完善 一个完整的在线录制程序出了具有最基本的视频录制功能外 还可以对视频的录制 进行控制 显示视频录制的进度以及可以对视频的质量进行调节等 因此可以进一步拓 展 添加开始录制 停止录制 暂停录制按钮 录制进度条以及录制质量调节按钮等 如今视频网站这在如火如荼的发展着 这也预示着今后网站发展的趋势 一个完整的视 频网站系统大致要求具有以下功能 用户的注册和登陆 用户登陆后可以上传或录制视 频到 FMS 服务器 视频上传或录制完毕后将相关信息写入数据库 用户根据视频列表包 房相应视频 5 7 聊天系统事件处理 ActionScript3 0 的事件处理具有以下特征 统一代码位置 所有的代码同意放在帧中 统一事件模型 统一采用 addEventListener9 函数注册事件 架构合理 复用性强 例如 MovieClip 类具有 onLoad 事件处理函数 XML 类也具有 onLoad 事件处理函数 增强 事件类型 增强了事件发送者 ActionScript3 0 所有的显示实例都是事件的发送者 可以 方便的添加这种事件 引入事件流机制 注册事件的形式为 发送者 addEventLister 事件名 接收者 function 接收者 e 事 件类型 一处事件的基本形式为 发送者 removeEventLister 事件名 接收者 5 7 1 事件发送者 毕业设计 论文 12 EventDispatcher 类用到的方法 EventDispatcher 构造方法 用于创建实例 addEventListener 用于注册侦听器 dispatchEvent 用于自定义事件 如果某个类继承了 EventDispatcher 类 这个类也具有以上六个方法 实例是事件的发送者 本项目中分配侦 听事件 myNS addEventListener NetStatusEvent NET STATUS netStatus 如表 5 3 所示 表 5 3 EventDispatcher 类的方法 方法名说明 EventDispatcher构造方法 用于创建实例 AddEentListener 用于注册侦听器 dispatchEvent 用于自定义事件 hasEventListener 检测是否具有某个侦听器 removeEventListener 用于移除侦听器 willTrigger 检测是够具有某个侦听器 5 7 2 事件接收者 事件接收者是函数 即在处理事件时必须定义接收者函数 然后把函数名即函数的 引用传递给 addEventListener 方法 定义接收者函数时必须定义一个参数 这个参数就是事件类的实例 是数据类型是 相关事件的事件类名 在本设计中用到了处理鼠标事件 在接受者函数定义一个 MouseEvent 类型的参数 切记侦听器未定义就拿来使用 在传递函数的引用时 要保证 引用确实存在 在该设计中的所有侦听器事件函数都是定义的所以可以正常使用 在传递函数的引 用时 要确保引用确实存在 该设计中的函数一般都引用了 this 来定义函数的路径 在类 中定义函数 this 指向类的实例 如果你要通过匿名函数来定义时 this 的作用范围会有 不同 作为侦听器的函数时 this 指向一个全局对象 在该设计中成功运用了事件流 event flow 在 as3 0 中成功引入了事件流事件机制 捕获阶段 从顶端 如 stage 到目标 目标阶段 目标 冒泡阶段 从目标到顶部 5 7 3 DisplayObject 类事件 Event 类对事件名和事件对象进行规范 即值保证事件这一要素 处理事件时 还需 要事件的发送者和接受者这俩个要素 接收者是函数 发送者就与 EventDispacher 类有关 DisplayObject 类用到了六个基本事件 这六个事件都是有 Event 类来管理 当播放器获得 系统的焦点时发生的事件 active 播放器失去系统焦点时发生的事件时 deactivate 显示实 例被添加到显示列表时用到的是 added 事件 显示实例从列表中删除用到的是 removed 事 件 更新显示列表即好友列表用到的是 render 事件 用到的这些事件都是由 Event 类管理的 所以在处理事件时 必须要在 DisplayObject 类和 Event 类之间发生联系 事件的基本原理 DisplayObject 类的实例是事件的发送者 而 Event 类的静态属性是事件名 Event 类的实例是事件对象 接收器函数必须接受 Event 类的实例作为参数 毕业设计 论文 13 5 7 4 MouseEvent 类 MouseEvent 类来管理与鼠标操作有关的事件 该聊天软件用到的比较多 比如单机 事件 双击事件 鼠标按下事件等 相对应的就是发送聊天信息的发送按钮 按下去之 后就会发送消息等 处理滚轮事件此程序还没有很好的实现 已经实现的 Mouse 的属性 如表 5 4 所示 表 5 4 MouseEvent 类的常用属性 属性说明 buttonDown鼠标是否按下 delta使用滚轮时 每单位滚动的值 localX鼠标的本地 X 坐标 localY鼠标的本地 Y 坐标 relatedObject鼠标滑进滑出时指向的显示实例 stageX鼠标的全局 X 坐标 stageY鼠标的全局 Y 坐标 表 5 5 MouseEvent 类的静态常量属性 静态属性说明 CLICK表示单机事件 DOUBLE CLICK表示双击事件 MOUSE DOWN表示鼠标按下事件 MOUSE MOVE表示鼠标移动事件 MOUSE OUT表示鼠标移除事件 MOUSE OVER表示鼠标移入事件 MOUSE UP表示鼠标释放事件 MOUSE EHEEL表示鼠标滑轮滚动事件 ROLL OUT表示移出事件 5 7 5 KeyboardEvent 类 键盘事件都是由 KeyboardEvent 类来管理 其事件只有 keyDown 和 keyUp 两个 分 别代表按下键和释放键 这俩个事件的事件名用 KeyboardEvent 类的类属性 KEY DOWN 和 KEY UP 来表示 还有本项目用到的方法如表 5 6 所示 表 5 6 KeyboardEvent 类使用的方法 方法说明 KeyboardEvent9 构造函数 用于创建实例 Clone 复制实例 toString 返回全部属性的字符串 UpdateAfterEvent 更新显示 与设置的帧速无关 5 7 6 自定义类的编写 毕业设计 论文 14 要定义一个类必须要编写包名 类名 属性和方法 定义包使用 package 关键字 在 包名字后面必须加上 类代码都写在 中 给类命名时的规则 首字母要大写 保存的 文件名要与类名相同 包括大小写要一样 类名最好要有一定的含义 能够见名知意 使用相对路径保存的类文件一般只是用于特定的 fla 文件 因此使用这种方法保存 可以重复使用类文件 这里 flash 提供了绝对路径保存类文件的方法 就可以把类放在一 定的目录中 对于 fla 文件来说 不管放在什么位置 都能使用这些类文件 在类中定义的变量有两种 一种是在方法外定义的 称为成员变量 另一种是在方 法内定义的 称为局部变量 方法参数也是属于局部变量 定义的属性有实例属性和类 属性 类属性又成静态属性 实例属性只能通过实例名来访问 而静态属性只能通过类 名来访问 实例属性和类属性其实都属于成员变量 即要在方法外定义实例属性与类属 性 为了保证类的封装性 在定义成员变量时候 一般不会让实例直接访问成员变量 而是通过一些方法来访问成员变量 在让实例通过调用这些方法间接访问成员变量 定义构造函数须遵循下面的规则 构造函数必须要与类名相同 每个类智能有一个 构造好书 构造函数与普通函数一样 可以带参数 构造函数没有返回值 要调用构造 函数 必须使用 new 运算符 5 8 调试 程序的调试要求电脑上必须要有 adobe player 播放器 第一种打开方式找到 fmsChat 程序文件夹打开 bin debug 文件夹 找到其中的 fmsChat html 并游览器打开 然后输入用 户名登录 第二种打开方式 打开 Flash Builder 编程软件 依次打开 文件 导入 Flash Bbuilder 项目 导入项目文件夹 找到 fmsChat 的存放路径打开 然后输入用户名登录 登 录成功 5 8 1 与服务器连接失败 如果输入用户名 点击登陆正常情况会提示你 info text 已经与服务器取得联系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论