用FMS做视频聊天系统 读取聊天记录时的问题

aomiao610 2009-08-24 04:45:16
function LoadTxt()//加载文本
{
var my_date = new Date();
var myURL:URLRequest = new URLRequest(talkurl+"/wbchat/talks/"+my_date.getFullYear()+"_"+(my_date.getMonth()+1)+"_"+my_date.getDate()+".txt");

//var myURL:URLRequest = new URLRequest("E://ChatLive/wbchat/talks/"+my_date.getFullYear()+"_"+(my_date.getMonth()+1)+"_"+my_date.getDate()+".txt");

var myLoader:URLStream = new URLStream();

myLoader.addEventListener(Event.COMPLETE, mlLoaded);
myLoader.load(myURL);
}

我的问题是:我在跟第一个人聊天后跟另外一个人聊然后返回到跟第一个人的时候读取文本里跟这个人聊天相关的信息,但是没能及时的读出来(嵌到网页中的,需要重新启动程序才能读到)

我用我注释了的那一条语句在FLASH中调试能够及时读出来,但是那个不能放在网页里!!

求助:怎么解决能够在网页里及时的读出相应的聊天记录!!
第一次发帖,没分。。。非常抱歉。。。但是我需要你们的帮助!!谢谢!
...全文
274 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuzhi 2009-08-26
  • 打赏
  • 举报
回复
这个应该是URLRequest的缓存问题,解决方法是在URL后面加一个随机量。比如加一个日期。



转:
flash与服务器端http通讯,一直都有缓存问题,对于刷新度要求很高的通讯,是个很大的困扰。

这里不讨论服务器端做相关控制禁止缓存,只考虑flash端做相关控制来禁止缓存。

解决方法就是在url后面加上个随机数或者当前时间来保证请求地址的唯一性。
如:


new URLRequest("http://127.0.0.1/1.txt?nocache=" + new Date().getTime());

http://www.flashas.net/asbc/20090807/4381.html
aomiao610 2009-08-26
  • 打赏
  • 举报
回复
不行!!为什么我用注释了的那一条在FLASH中调试就能够及时读取呐!
aomiao610 2009-08-26
  • 打赏
  • 举报
回复
真是太谢谢 zhuzhi 了~!!

问题已解决 是缓存的问题

结贴!!
aomiao610 2009-08-25
  • 打赏
  • 举报
回复
不行。。。
xingjunli 2009-08-25
  • 打赏
  • 举报
回复
  在场景中注册循环监听事试试
  addEventListener(Event.ENTER_FRAME,LoadTxt);
aomiao610 2009-08-25
  • 打赏
  • 举报
回复
谢谢 zhuzhi 的帮助,但是还不是我需要的!!我的聊天记录已经存在FMS中的一个文本里,现在读取是读得到的!!就是及时读取的问题!!
zhuzhi 2009-08-25
  • 打赏
  • 举报
回复
一直以来,由于处于安全上的考虑,flash一直无法对本地文件进行操作。目前针对该问题以经有了几种解决方案,如:利用MMSave函数保存数据,但需要调试环境的支持。结合Javascript保存数据,但有该方法有一个较大的缺点是,由于IE的限制,每次往本地保存数据时都IE都会弹出对话框询问,若装有杀毒软件的话,也会弹出警告的提示框。还有就是结合服务器端程序,如:asp,jsp等进行数据访问。在这里推荐一种使用SharedObject对象来进行数据访问的方法:

//注意这里的fooA,是要保存的文件名,后缀默认且必需为.sol
myObj = SharedObject.getLocal("fooA"); //生成一个本地共享对象
if (myObj.data.myObj == undefined) { //如果该对象没有数据的场合
trace("Storing Data, run me again");
//以下是一个较复杂的数据结构
//用来说明利用SharedObject对象也可以保存复杂的数据结构
myObj = {};
myarray = new Array();
myarray.push({A:"106", B:"107", C:"108"}); //这是一个数据结构(要保存的数据1)
myarray1 = new Array();
myarray1.push({A:"1", B:"2", C:"3"}); //要保存的数据2
//这里很令人困惑,其实这里的.fname和lname是任意写的你也可以写oname等
myObj.fname = myarray; //将数据放入数组中
myObj.lname = myarray1;
myObj.data.myObj = myObj; //将数据赋值结共享对象
} else {
trace("Retrieving Data");
//取出数据文件.sol中的数据
var firstname = myObj.data.myObj.fname;
var lastname = myObj.data.myObj.lname;
//由于保存的myObj.fname和.lname都是一个Array
//所以取出来的myObj.fname也是一个Array
trace("First Name: " + firstname[0]["A"]);
trace("Last Name: " + lastname[0]["A"]);
}

SharedObject(共享对象)可以用来存储任何Flash支持的数据类型,比如数字、字符串、数组和对象等等。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。对于Windows98(me)用户来说,默认的存储路径是:Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf;对于Windows2000(xp)用户来说,默认的存储路径是:Documents and Settings\[User]\Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf。本地型共享对象只能将数据保存在默认路径下,而且扩展名只能是.sol。在网上有看到说该方法受文件大小的限制,最大为1K,但经过反复实验发现,该方法并不受文件大小限制。
zhuzhi 2009-08-25
  • 打赏
  • 举报
回复

http://hi.baidu.com/appal/blog/item/c190e8dd0db4c8ee77c63828.html
aomiao610 2009-08-25
  • 打赏
  • 举报
回复
HELP!!!!
fallenjh 2009-08-25
  • 打赏
  • 举报
回复
选择聊天对象时,增加一个监听器,调用LoadTxt()`不知行否
aomiao610 2009-08-25
  • 打赏
  • 举报
回复
我通过其他途径已经能实现跟不同人聊天的信息读取,虽然对我这个项目已经够用,但是还是希望上面的问题能够得以解决!!

UP!!
aomiao610 2009-08-24
  • 打赏
  • 举报
回复
有分了!!加分问!!

2,278

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧