七彩课堂[FLASH动画教程系列]
Flash聊天室的实现(4)
四、显示聊天内容
   显示聊天内容的基本原理是从Flash端发送要显示聊天内容的请求,在服务器端将application("AllCanSee")的内容发送到Flash端,Flash端显示出来。
   A、asp部分
   1、新建一个空白文件,命名为content.asp,其内容如下:
<%
username = request("username")
tempstr = "cflag=true"
tempstr = tempstr & "&ccontent=" & application("AllCanSee") &bsp; //注释1
response.Write(tempstr)
%>
   注释1:向Flash端返回标志位和聊天内容。
B、Flash部分
   1、在主场景中拉一个对话框,属性设置如图5所示。
2、按Ctrl + F8,新建一个movie clip,命名为contentloop,在此clip的第一帧的action面板上增加下面的语句:
_root.ccount = 0;
stop();
在clip的第5帧上插入关键帧,在其action面板上面增加如下语句:
if (!(_root.cflag)) { //注释1
_root.ccount = _root.ccount + 1;
if (_root.ccount > 50) //注释2
{
_root.gotoAndPlay("netfalse");
_root.contentloop.gotoAndStop(1);
}
_root.contentloop.gotoAndPlay(2);
}
if (_root.cflag == "true") //注释3
{
_root.txtcontent = _root.ccontent ;
_root.contentloop.gotoAndStop(1);
}
   注释1:判断是否已经从服务器端返回值,还没有则计数器加一。
   注释2:当计数器累计到50的时候,跳转到网络超时界面。
   注释3:从服务器端返回的值为true,显示聊天的内容。
   3、将contentloop从图库拖到主场景main帧中,命名为contentloop。
   4、在主场景main帧中增加一个button,显示的内容为“更新”。在button的action面板上面增加如下语句:
on (release) { //注释1
loadVariables("content.asp?username=" add _root.username add "&num=" add _root.num, this, "POST");
_root.contentloop.gotoAndPlay(2);
loadVariables("talker.asp", this, "POST"); //注释2
_root.talkerloop.gotoAndPlay(2);
}
   注释1:点击button后,向服务器端发送数据。
   注释2:这是为显示在线人数列表做准备的。
   C、小结与提高
   注意后面要用到的显示在线人数列表也要在此处先定义。要进一步完善,可以考虑从过滤某些人的发言、踢人上去考虑。

五、显示在线人数列表
   显示在线人数列表的基本原理是在Flash端发送显示在线人数列表的请求,服务器端将application("VisitorName")对象的内容发送到Flash端,在Flash端显示出来。
   A、asp部分
   1、新建一个空白文件,命名为talker.asp,其内容如下:
<%
tempstr = "tflag=true"
tempstr = tempstr & "&talker=" & application("VisitorName") ‘注释1
response.Write(tempstr)
%>
   注释1:向Flash端发送标志位和在线人数列表。
   B、Flash部分
   1、在主场景中拉一个对话框,属性设置如图6所示。
  2、按Ctrl + F8,新建一个movie clip,命名为talkerloop,在此clip的第一帧的action面板上增加下面的语句:
_root.tcount = 0;
stop();
在clip的第5帧上插入关键帧,在其action面板上面增加如下语句:
if (!(_root.tflag)) { //注释1
_root.tcount = _root.tcount + 1;
if (_root.tcount > 50) //注释2
{
_root.gotoAndPlay("netfalse");
_root.talkerloop.gotoAndStop(1);
}
_root.talkerloop.gotoAndPlay(2);
}
if (_root.tflag == "true") //注释3
{
_root.txttalker = _root.talker;
_root.talkerloop.gotoAndStop(1);
}
   注释1:判断是否已经从服务器端返回值,若未的话则计数器加一。
   注释2:当计数器加到50的时候,跳转到网络超时界面。
   注释3:若返回的标志位为true,在文本框中显示返回的列表。
   3、将talkerloop从图库拖到主场景main帧中,命名为talkeloop。
   C、小结与提高
   这里实现的只是一个简单的处理,在实际应用中,要考虑用户id之间的分隔符,要考虑当用户退出聊天室时对application("VisitorName")对象的处理,要实现一个完善的处理还是比较复杂的。

 
信息推荐
资讯中心 | 电子商务 | 搜索营销 | 设计学院 | 中医养生 | 养生保健 | 节日祝福 | 民俗文化 | 奇闻趣事
建站知识 | 人世百态 | 网站导航 | 传统节日 | 搜索热点 | 星座运势 | 趣闻轶事 | 祝福的话 | 短信大全
© 2023 QicaiSpace.Com