-
sharedObject远程文本交互的问题。10
用sharedObject做实事文本交流时,两个页面不能同时获取共享信息,总有一个页面是空白,求大神们指点。服务器端用的是FMS4.5版,没有代码。
代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import vo.Message;
private var nc:NetConnection;
private var so:SharedObject;
private var host:String = "rtmp://localhost/myApp";
protected function init():void
{
nc = new NetConnection();
nc.connect(host);
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
}
protected function netStatusHandler(evt:NetStatusEvent):void
{
if(evt.info.code == "NetConnection.Connect.Success")
{
so = SharedObject.getRemote("chat",nc.uri,true);
so.connect(nc);
so.addEventListener(SyncEvent.SYNC,syncHandler);
chatMsg.addEventListener(FlexEvent.VALUE_COMMIT,valueHandler);
}
else
{
Alert.show("连接失败" + evt.info.code,"提示");
}
}
protected function valueHandler(event:FlexEvent):void
{
chatMsg.verticalScrollPosition = chatMsg.maxVerticalScrollPosition;
}
protected function enterHandler(event:FlexEvent):void
{
sendMsgHandler();
}
protected function onClick(event:MouseEvent):void
{
sendMsgHandler();
}
protected function sendMsgHandler():void
{
var arr:ArrayCollection = new ArrayCollection();
if(so.data.msgList != null)
{
convertArrayCollection(arr,so.data.msgList as ArrayCollection);
}
var myMsg:Message = new Message();
myMsg.nickName = userName.text;
myMsg.msg = msgTxt.text;
myMsg.time = new Date();
arr.addItem(myMsg);
so.setProperty("msgList",arr);
msgTxt.text = "";
}
protected function syncHandler(event:SyncEvent):void
{
chatMsg.text = "";
if(so.data.msgList != null)
{
var tmp:ArrayCollection = new ArrayCollection();
convertArrayCollection(tmp,so.data.msgList as ArrayCollection);
for(var i:int=0;i<tmp.length;i++)
{
var message:Object = tmp.getItemAt(i);
var time:Date = message.time;
var dd:String = time.getFullYear().toString() + "-"
+ (time.getMonth()+1).toString() + "-" +
time.getDate().toString() + " " + time.getHours().toString()
+ ":" + time.getMinutes().toString() + ":" + time.getSeconds().toString();
var fullMsg:String = message.nickName + "在" + dd + "说:" + message.msg;
chatMsg.text = chatMsg.text + fullMsg + "\n";
}
}
}
protected function convertArrayCollection(arrNew:ArrayCollection,arrOld:ArrayCollection):void
{
arrNew.removeAll();
for(var i:int=0;i<arrOld.length;i++)
{
arrNew.addItemAt(arrOld.getItemAt(i),i);
}
}
]]>
</fx:Script>
<s:BorderContainer x="251" y="78" width="449" height="288" backgroundColor="0x9fdee4">
<mx:TextArea id="chatMsg" x="10" y="13" width="419" height="224" editable="false"/>
<s:TextInput id="userName" x="10" y="245" width="66"/>
<s:TextInput id="msgTxt" x="131" y="245" width="203" enter="enterHandler(event)"/>
<s:Label x="95" y="245" height="18" fontSize="14" text="说:"/>
<s:Button x="359" y="246" label="发送" click="onClick(event)" fontSize="14"/>
</s:BorderContainer>
</s:Application>
2011年10月19日 10:52
目前还没有答案
相关推荐
共享对象(SharedObject)是Flex中的一个重要特性,它允许在客户端存储数据,类似于浏览器的Cookie,但提供了更大的存储容量(最大100KB本地,5MB远程)。在聊天室应用中,SharedObject可以用来缓存用户的个人信息,...
SharedObject则提供了客户端和服务器间的数据共享机制,特别适用于实现游戏中的同步操作。 编写第一个程序包括创建服务器端和客户端代码。服务器端通常用Java编写,实现所需的服务接口;客户端代码则采用...
AS3提供SharedObject类,可以用来存储少量的本地数据,或者通过与服务器的通信接口(如XMLSocket或URLLoader)实现远程数据交换。 5. 用户交互:AS3支持键盘、鼠标和触摸事件,使得玩家可以通过点击、拖放等方式与...
Red5的`SharedObject`功能可以实现客户端之间的数据同步,确保所有用户看到的白板状态一致。 6. **网络通信**: AS3中的`NetConnection`和`NetStream`类用于与Red5服务器建立连接并发送/接收数据。`NetStatusEvent...
videoList_so = SharedObject.getRemote("name", netConnection.uri, true); ``` 其中,"name"是共享对象的名称,`netConnection.uri`是服务器的连接地址,`true`表示即使断开连接也要在服务器上保留共享对象。 ...
1. **SharedObject介绍**:共享对象是一种存储数据的方式,可以在不同的客户端之间共享。 2. **游戏中移动同步的原理和简单实现**:通过共享对象可以实现实时数据同步,例如游戏角色的位置信息更新。 #### 五、...
### Flex3.0 学习手册关键知识点综述 ...6. **远程共享对象**: 利用SharedObject实现多人在线聊天。 通过上述内容的学习,读者能够全面掌握Flex3.0的基础知识和技术要点,并能够运用这些技能来开发实际的应用程序。
它使用DLL(Dynamic Link Library)和SO(Shared Object)库进行数据处理,并支持多进程技术以提高效率和稳定性。逻辑层的主要职责包括: - **接收表示层传递的数据并按内容传递给数据层和通信层处理**:如根据用户...
22.2.1使用SharedObject本地存储 486 22.2.2用户登录示例 487 22.3小结 491 第23章网络通信 492 23.1处理外部数据 492 23.1.1请求与参数 492 23.1.2简单数据发送 493 23.1.3数据发送与载入 494 23.1.4图片载入示例 ...
11. **COM/DCOM(Component Object Model/ Distributed Component Object Model)**:微软的组件技术,COM用于本地进程间的数据交换,DCOM扩展至远程主机,通过接口调用传递数据。 每种方法都有其适用场景和优缺点...
- **定义**:SharedObject 是一种持久化存储机制,用于在客户端保存数据。 - **应用场景**:保存用户的偏好设置或临时数据。 #### 8.4 BlazeDS 配置及使用 - **定义**:配置 BlazeDS 以便 Flex 应用能够与远程...
- **优点**:提供了丰富的功能,包括数据的实时更新和应用程序间的交互。 - **缺点**:实现复杂,安全性较低。 #### 7. 对象链接与嵌入(OLE, Object Linking and Embedding) OLE是一种更高级别的进程间通信技术...
14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ...
protected void Page_Load(object sender, EventArgs e) { } } 上述代码为Default.apx.cs页面代码。从上述代码可以看出,其格式与类库、编写类的格式相同,这也说明了.aspx页面允许使用面向对象的特性,如多态、...