`
wenbin151
  • 浏览: 32097 次
  • 性别: 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有两种类型:LocalSharedObject和RemoteSharedObject。LocalSharedObject仅...

    ShareObject对象详解

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

    Flex学习—关于Shareobject对象(本地共享对象)

    本文将深入探讨Flex中的一个重要组件——ShareObject,也称为本地共享对象,它允许应用程序在用户计算机上存储数据,实现数据的持久化。 ShareObject是Flex提供的一种轻量级的数据存储解决方案,它类似于Web浏览器...

    FLASH8中ShareObject的简单运用

    在不连接数据库的情况下,保存数据,并在下次打开SWF文件时依旧可以读取到以前写入的数据. 其他的可以照葫芦画瓢,都一个样的。

    Flex ShareObject简单应用

    在Flex程序中使用ShareObject的步骤一般如下: 1. 定义ShareObject变量,用来访问或创建一个ShareObject实例。 2. 使用SharedObject.getLocal()方法获取一个本地ShareObject实例,如果指定的ShareObject实例已存在,...

    flex多人多房间 聊天室

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

    juv-rtmp-client shareobject连接

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

    flex shareObject 本地共享

    仿造qq登陆功能写的 Flash提供的本地共享对象ShareObject是一种跨平台较好的方案,当然在客户端已经安装Flash Player的情况下。 ShareObject默认只能存储100Kb的数据,用户可

    AppletFirewall&ShareObject;

    标题 "AppletFirewall&ShareObject" 指出了本文讨论的主要内容,即关于Java Card平台中Applet防火墙机制以及对象共享机制。 描述部分反复强调了智能卡应用防火墙与共享机制的概念,指出了该机制的目的是保护单个...

    flex 基于red5的多人聊天

    在这个场景下,“flex 基于red5的多人聊天”是一个典型的应用示例,它利用Adobe Flex技术和Red5服务器来实现多人之间的实时通信。 Flex是一种开源的富互联网应用(RIA)开发框架,基于ActionScript编程语言,可以...

    shared Object 用法

    总之,共享对象在Flash中提供了一种高效的数据共享机制,能够实现跨客户端的数据同步和存储,对于构建富互联网应用程序(RIA)至关重要。正确理解和运用共享对象,可以极大地提升应用的交互性和实时性。

    引用外部类实现Flash Cookie的读写

    在Flash开发中,有时我们需要在用户的计算机上存储数据以便在用户下次访问时恢复状态或提供个性...利用`ShareObject`类和自定义的`Cookie`类,我们可以方便地存储和检索用户数据,但同时需注意处理好隐私和合规性问题。

    原生 PB9 通过 API 实现多线程串口 COM 通讯

    1、Powerbuilder9.0_8836的版本 2、采用API,支持串口信号事件 3、事件监听、读字符,写字符都是采用的是多线程 4、多线程用的是PB的shareobject方法,不会crash。 5、内含虚拟串口工具和串口调试工具以及API串口...

    原生PB9通过API实现多线程串口COM通讯

    1、Powerbuilder9.0_8836的版本 2、采用API,支持串口信号事件 3、事件监听、读字符,写字符都是采用...4、多线程用的是PB的shareobject方法,不会crash。 5、内含虚拟串口工具和串口调试工具以及API串口相关说明文档。

    入门简单的FLEX验证码一例

    这只是一个简单的示例,实际的验证过程可能会更复杂,例如利用ShareObject与服务器共享数据,或者使用HTTPService或URLRequest发送AJAX请求进行后台验证。 4. **验证机制扩展**:这个简单的验证码例子只涉及了用户...

    flex 测试写的一些demo集合

    Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的开放源代码框架,它基于ActionScript编程语言和MXML标记语言。本压缩包文件“flex 测试写的一些demo集合”显然是一个包含多个Flex示例项目的集合,旨在...

Global site tag (gtag.js) - Google Analytics