`
wenbin151
  • 浏览: 32847 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

利用ShareObject实现简单聊天程序

阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initFun()" width="507" height="434">
<mx:Script>
<![CDATA[
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	
	private var nc:NetConnection;
	private var clientID:Number;
	private var soChat:SharedObject;
	private var arr:Array = new Array();
	
	[Bindable]
	private var con:ArrayCollection;

	private function initFun():void
	{
		nc = new NetConnection();
		nc.objectEncoding = flash.net.ObjectEncoding.AMF0;
		nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);
		nc.connect( "rtmp://localhost/SOSample" );
		//监听键盘回车键
		application.addEventListener(KeyboardEvent.KEY_DOWN,sendKeyHandler);
	}

	private function statusHandler(event:NetStatusEvent):void
	{
		if(event.info.code == "NetConnection.Connect.Success"){
			connectToChat();
		}
	}

	private function connectToChat():void
	{
		soChat = SharedObject.getRemote( "wxwred5", nc.uri, true );
		soChat.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler );
		soChat.addEventListener( AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler );
		soChat.addEventListener( SyncEvent.SYNC, sharedObjectSyncHandler );
		soChat.client = this;
		soChat.connect( nc );
		
		soChat.send( "getName" );
	}

	public function getName():void
	{
		var msg:String=lTrim(rTrim(txtUser.text.valueOf()));
		trace( "getName: " + txtUser.text );
		if(msg.length==0){
			Alert.show("禁止刷屏");
			txtUser.text="";
		}else{
			soChat.setProperty("key",txtUser.text);
			txtUser.text="";		
		}

	}

	public function newName(str:String):void
	{
		arr.push(str);
		soChat.setProperty("arr",arr);
		con = new ArrayCollection(arr);
	}

	private function sharedObjectSyncHandler( event:SyncEvent ):void
	{
		trace( "sharedObjectSyncHandler:code: " + event.changeList );
		arr.push(event.target.data.key);
		con = new ArrayCollection(arr);
	}

	private function netStatusHandler( event:NetStatusEvent ):void
	{
		trace( "netStatusHandler:code: " + event.info.code );
	}
	private function asyncErrorHandler( event:AsyncErrorEvent ):void
	{
		trace( "asyncErrorHandler:code: " + event.error );
	}
	private function sendKeyHandler(event:KeyboardEvent):void
	{
		//Enter 键
		if(event.keyCode==13){
			getName();
		}
		//监听组合键 Ctrl+Enter 键
		if(event.keyCode==13&&event.ctrlKey){
			Alert.show("监听组合键 Ctrl+Enter 键");
			
		}
		
	}
	//去掉左空格
	public function lTrim(str:String):String {
		var regx:RegExp = /(^\s*)/g;
		return str.substr(regx.exec(str)[0].toString().length);
	}
	//取得右空格
	public function rTrim(str:String):String {
		var regx:RegExp = /(\s*$)/g;
		return str.substring(0, str.length - regx.exec(str)[0].toString().length);
	}
]]>
</mx:Script>
	<mx:Panel width="378" height="315" layout="absolute" y="50" x="70" title="聊天" fontSize="12">
		<mx:TextInput id="txtUser"  x="37" y="223" fontSize="12"/>
		<mx:Button click="getName()" label="发送"  x="220" y="223" fontSize="12"/>
		<mx:List id="listView" height="203" dataProvider="{con}" width="237" x="37" y="10"  fontFamily="Arial" fontSize="12"    verticalScrollPolicy="on"></mx:List>
	</mx:Panel>
</mx:Application>
 

 

分享到:
评论

相关推荐

    ShareObject对象详解

    ShareObject对象是Adobe Flex中用于数据共享的一种机制,它能够帮助开发者在客户端和服务器端之间存储和...在开发过程中,合理利用ShareObject可以提高用户体验,尤其是在需要跨会话保存数据或实现多用户协作的应用中。

    flex多人多房间 聊天室

    在本文中,我们将深入探讨Flex和Red5技术以及如何利用ShareObject实现即时聊天功能。 Flex是Adobe开发的一种开源框架,用于构建富互联网应用程序(RIA)。它基于ActionScript编程语言和MXML标记语言,可以创建具有...

    juv-rtmp-client shareobject连接

    开发者可以利用这些API建立到RTMP服务器的连接,然后发送和接收ShareObject,从而实现数据的实时交互。 使用"juv-rtmp-client"时,首先需要初始化客户端并建立到服务器的连接。这通常涉及到设置RTMP服务器的URL、...

    支持pyramid2.x的kotti web代码

    Kotti 是一个基于 Pyramid 框架的 Python 内容管理系统(CMS),适合用来搭建中小型网站、文档库、企业展示平台、知识库等需要灵活内容结构和权限模型的项目。它本身更像一个可以二次开发的 CMS 框架,比 WordPress、Drupal 这类“一装就用”的系统更倾向于开发者定制和扩展。 这是支持pyramid2.x版本的kotti! tar -xzvf kotti1.0.tar.gz 解压缩 进入目录执行 pip install -e . 来安装, 然后执行pserve app.ini 启动。 用浏览器浏览127.0.0.1:5000 即可浏览。 用户名admin ,口令qwerty

    cmd-bat-批处理-脚本-hello world.zip

    cmd-bat-批处理-脚本-hello world.zip

    知识付费系统自动采集V3.0 跳转不卡顿+搭建教程

    知识付费系统自动采集V3.0 跳转不卡顿+搭建教程,不和外面的一样跳转卡顿,这个跳转不卡顿,支持三级分销。

    基于Matlab实现图像形状纹理颜色特征提取

    在Matlab环境下,对图像进行特征提取时,主要涵盖形状、纹理以及颜色这三大关键特征。其中,对于纹理特征的提取,采用灰度梯度共生矩阵这一方法来实现。通过灰度梯度共生矩阵,可以有效地捕捉图像中像素灰度值之间在不同方向和距离上的相互关系,进而量化地反映出图像的纹理特性,为后续的图像分析、分类等任务提供重要的纹理信息依据。

    实证数据-2010-2023年上市公司-管理层情感语调数据-社科经管.rar

    该数据集为2010-2023年中国A股上市公司管理层情感语调的年度面板数据,覆盖45,320条样本,数据源自年报及半年报的"管理层讨论与分析"部分。通过构建中文金融情感词典(融合《知网情感分析用词典》与L&M金融词汇表),采用文本分析方法计算情感语调指标,包括:正面/负面词汇数量、文本相似度、情感语调1((积极词-消极词)/总词数)和情感语调2((积极词-消极词)/(积极词+消极词))。同时包含盈利预测偏差、审计意见类型等衍生指标,可用于研究信息披露质量、市场反应及代理问题。该数据复刻了《管理世界》《财经研究》等期刊的变量构建方法,被应用于分析语调操纵对债券市场的影响,学术常用度与稀缺度较高。

    cmd-bat-批处理-脚本-FTIME.zip

    cmd-bat-批处理-脚本-FTIME.zip

    1747829038637.png

    1747829038637.png

    2025年自动化X光检查机项目大数据研究报告.docx

    2025年自动化X光检查机项目大数据研究报告.docx

    基于Logisim的原码与补码一位乘法器设计

    在计算机组成原理课程设计中,我全程跟随老师的指导,独立完成了以下两项任务:一是利用Logisim软件进行原码一位乘法器的仿真设计,通过逐步搭建电路、配置逻辑单元,实现了原码乘法运算的完整流程,深入理解了原码乘法的原理和实现机制;二是完成了补码一位乘法器的Logisim仿真,同样按照老师讲解的步骤,精心设计电路,确保补码乘法运算的正确性,进一步掌握了补码乘法的运算规则和电路实现方法。通过这两个项目,我不仅巩固了理论知识,还提升了动手实践能力和逻辑思维能力。

    cmd-bat-批处理-脚本-msvc2017.zip

    cmd-bat-批处理-脚本-msvc2017.zip

    cmd-bat-批处理-脚本-virtualcam-install.zip

    cmd-bat-批处理-脚本-virtualcam-install.zip

    二十四节气之立秋介绍.pptx

    二十四节气之立秋介绍.pptx

    cmd-bat-批处理-脚本-shift.zip

    cmd-bat-批处理-脚本-shift.zip

    二十四节气之小雪介绍.pptx

    二十四节气之小雪介绍.pptx

    java、SpringBoot面试专题,6页面试题

    java、SpringBoot面试专题,6页面试题

    cmd-bat-批处理-脚本-GenerateUnionWinMD.zip

    cmd-bat-批处理-脚本-GenerateUnionWinMD.zip

    二十四节气之大暑节气.pptx

    二十四节气之大暑节气.pptx

Global site tag (gtag.js) - Google Analytics