编写flash+asp聊天室的几大难点
来说说程序几个"难点"大概的实现原理(高手免疫 goto end),需要懂一些asp其实和那些直接在网页上的聊天室差不多,只是在flash中表现而已,刷新的时候不会闪动,可以比较方便的美化界面.
asp 方面
1,让公共聊天记录只保持固定的条数,新加入用户只能看到他加入以后的聊天记录.
挺简单的,第一天就想到了,把每条聊天记录分开用apllication变量来存.
不太好表述了,请看源代码中的flashchat.asp,所有的处理都在里面.
2,私聊
把每个用户私聊信息存在application(session(""你的用户名""))里
如下面
chatto=Request.from("chatto")
chattxt=Request.from("chattxt")
application(session(chatto))=chattxt
Response。write(application(session("username")))
session("username")是你的用户名(在登陆时已经赋予),chatto是你要说悄悄话对象的用户名,chattxt是悄悄话内容,如果chatto="a",chattxt="你好"时,application("a")被赋予"你好",后面那句Response。write(application(session("username"))) 也只有当叫"a"的用户访问才会显示(就是application("a")的值)."b"用户访问则是输出aplication("b")的值,当然是空了.
3,实时退出
本来以为是不可能的,但没想到ie的onunload事件(在html上的js)可以在窗口关了以
后的少许时间还可以执行代码.ff不行,这里有说过http://bbs.blueidea.com/viewthread.php?tid=2803728&highlight=
在放flash的html加上onunload事件,内容是调用chatexit.asp(内容是清除session,清掉application("用户名"),并把这个用户名从列表中删掉).用xmlhttpRequest来open它就行了.(具体请看chat.htm),另外还要防止浏览器非正常关闭(死机,停电),没机会触发onunload事件.还要在Global.asa的session_onend中添加相应的代码,把
chatexit.asp的内容复制过去就好了,session的timeout时间到就执行。我在flashchat.asp中设了session.timeout=2,如果影响网站可以删掉session.timeout=2。
flash方面
这方面好像没什么难点的,简单说说了
与asp的交互是用loadvar,用sentandload来刷新(每3秒),聊天内容每3秒刷一
次,asp方面检测传过来的聊天数据,为空则不做任何处理.用户列表每15秒刷新一次(
这是flash内部的刷新).
用户列表的实现是用比较土的方法,先在asp中用一个application变量来存所有的用
户名(只在第一次进来才存,用“|"隔开),然后在flash中将它split.放到右边用代码
创建的mc上.
( 可怕,写贴过程中浏览器忽然down掉,好在写长贴时会定时备份一下,就备份到这里)
说说程序的使用
单击用户列表中的用户名可以对他悄悄话.单击上面的"公共"或"私人"来切换显示
flashchat.asp中的maxnum是设置公共区最多显示条数,默认是9,私人区没有限制.
文件很小不到20k,icq上的那个130k,界面也是同样简陋的,可能是用了图形组件.
因为我不想用组件所以临时自定义了两个简单的滚动条类,没有箭头的.忘了说了,因为ff
onunload的原因,所以把非ie浏览器禁了(在chat.htm里).
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |