| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
Flash 与 Asp结合使用实例之二 聊天室的实现前面几篇教程我们介绍了Flash与Asp结合使用的原理以及一个论坛的实现,下面我们继续结合Flash与Asp来实现一个简单的聊天室,有在线聊天、在线人员名单、在线时间等功能。在这篇教程的最后,还比较详细地介绍了Flash与Asp结合使用的平台环境和常用的调试手段。 一、原理 主要的流程是先在Flash端发送一个请求到服务器端,然后等待从服务器端的返回值,当值返回Flash端后,根据相应的值做相应的操作。在Flash部分,跟前面的教程一样,用到的主要都是loadVariables()函数和循环等待的技巧。在Asp部分,主要用到了global.asa文件和application()属性,先定义几个application对象,然后将要保持的内容放在application对象中,要用的时候,直接从application对象中取就是了。 二、登陆 登陆部分的基本原理是:在Flash端输入用户名和密码,通过Asp查询数据库,如果用户名和密码正确,就跳转到聊天主界面,否则就跳转到登陆失败界面。 A、asp部分 1、 新建一个空白文件,命名为global.asa,内容如下:
注释:上面是一个global文件,定义了几个application对象,sub application_onstart的意思是在启动服务的时候触发,初始化这些对象。Application对象可以在几个网页之间保持内容,application("VisitorNum")中的是当前在线人数,application("VisitorName")中的是当前在线人员名单,application("AllCanSee")中的是当前的聊天内容。 2、新建一个空白文件,命名为login.asp,跟global.asa保存在同一个目录中,内容如下: 注释1:取得从Flash端传过来的用户名和密码。
B、Flash部分 1、在属性面板上,将第一帧的“帧标签”设为“login”。在第一帧的Action面板中加上: 2、如图1所示,在场景中放置两个文本框,两个button,其中上面一个文本框的设置如图2所示,另一个文本框的设置如图3所示。
3、新建一个组件,命名为“loginloop1”,在第一帧的Action面板中加上下面语句: _root.count = 0; 注释1:判断结果是否已经从服务器端返回,不是的话,计数器加一。 4、将组件“loginloop1”从图库中拖到场景中,将其实例名设为“loginloop”。 5、在场景中登陆Button的Action面板中增加下面的语句: on (release) { 注释1:判断用户名和密码是否为空。
6、在主场景中的第5帧中插入关键帧,将此帧命名为“netfalse”,在此帧场景中添加“网络连接超时……”的信息。在帧的Action面板中增加下面的语句: stop(); 7、在主场景中的第10帧中插入关键帧,将此帧命名为“loginfalse”,在此帧场景中添加“用户名或密码错”的信息。在帧的Action面板中增加下面的语句: stop(); C、小结与提高 在Asp部分要注意的是当登陆成功后,要在application("VisitorName")和application("VisitorNum")对象中加上相应的值。在Flash部分中,先用loadVariables()发送请求,然后启动另外一个clip等待返回的值,这是一种比较好的操作方法。 三、发送 发送部分的基本原理是从Flash端发送聊天内容到服务器端,在服务器端将聊天内容添加到application("AllCanSee")对象中,并将修改后的application("AllCanSee")对象的内容返回到Flash端。 A、asp部分 1、新建一个空白文件,命名为send.asp,其内容如下: <% 注释1:将从flash端发送来的内容添加到聊天的内容中。 B、Flash部分 1、在主场景的第15帧中添加关键帧,将此帧命名为“main”,在帧的Action面板中增加下面的语句: now = new Date(); file://注释1 注释1:这是为计算在线时间而设的。 2、在主场景中拉一个对话框,属性设置如图4所示。
3、按Ctrl + F8,新建一个movie clip,命名为sendloop,在此clip的第一帧的action面板上增加下面的语句: _root.countsend = 0; 注释1:判断返回的标志位,若还没从服务器返回值,计数器加一。 4、将sendloop从图库拖到主场景main帧中,命名为sendloop。 5、在主场景main帧中增加一个button,显示的内容为“发送”。在button的action面板上面增加如下语句: on (release) { 注释1:判断要发送的内容是否为空,为空则显示警告信息。 C、小结与提高 跟登陆部分差不多的流程,先发送请求,然后等待返回的值,根据返回的值来执行相应的操作。这里要注意的是变量的命名不能跟前面重复,还有后面要用到的时间变量也要先定义。这里的实现比较简单,只是简单介绍了流程,如果要考虑一下发送动作、发送图标、私聊等等,还有非常多的工作要做。 四、显示聊天内容 显示聊天内容的基本原理是从Flash端发送要显示聊天内容的请求,在服务器端将application("AllCanSee")的内容发送到Flash端,Flash端显示出来。 A、asp部分 1、新建一个空白文件,命名为content.asp,其内容如下: <% 注释1:向Flash端返回标志位和聊天内容。
B、Flash部分 1、在主场景中拉一个对话框,属性设置如图5所示。
2、按Ctrl + F8,新建一个movie clip,命名为contentloop,在此clip的第一帧的action面板上增加下面的语句: _root.ccount = 0; 注释1:判断是否已经从服务器端返回值,还没有则计数器加一。 3、将contentloop从图库拖到主场景main帧中,命名为contentloop。 4、在主场景main帧中增加一个button,显示的内容为“更新”。在button的action面板上面增加如下语句: on (release) { file://注释1 注释1:点击button后,向服务器端发送数据。 C、小结与提高 注意后面要用到的显示在线人数列表也要在此处先定义。要进一步完善,可以考虑从过滤某些人的发言、踢人上去考虑。 五、显示在线人数列表 显示在线人数列表的基本原理是在Flash端发送显示在线人数列表的请求,服务器端将application("VisitorName")对象的内容发送到Flash端,在Flash端显示出来。 A、asp部分 1、新建一个空白文件,命名为talker.asp,其内容如下: <% 注释1:向Flash端发送标志位和在线人数列表。 B、Flash部分 1、在主场景中拉一个对话框,属性设置如图6所示。
2、按Ctrl + F8,新建一个movie clip,命名为talkerloop,在此clip的第一帧的action面板上增加下面的语句: _root.tcount = 0; 注释1:判断是否已经从服务器端返回值,若未的话则计数器加一。 3、将talkerloop从图库拖到主场景main帧中,命名为talkeloop。 C、小结与提高 这里实现的只是一个简单的处理,在实际应用中,要考虑用户id之间的分隔符,要考虑当用户退出聊天室时对application("VisitorName")对象的处理,要实现一个完善的处理还是比较复杂的。
六、显示在线时间 显示在线时间的原理是在前面定义了一个时间变量,然后不断取得当前的时间值,两者相减并显示出来。 A、Flash部分 1、在主场景中拉一个对话框,属性设置如图7所示。此时场景中布局如图8所示。
2、按Ctrl + F8,新建一个movie clip,命名为timeloop,将timeloop拖到场景中,在clip的Action面板上面增加如下语句: onClipEvent (load) { file://注释1 注释1:当load这个clip的时候,新建一个date对象。 B、小结与提高 这里用到的计时方法是一种很常用的技巧,其关键之处是在先定义一个时间变量,然后不断更新当前的时间变量,取两者之差。注意两者的差是毫秒,要除以1000。 七、运行平台与调试技巧 至此,一个简单的聊天室就制作完成了,下面来介绍一下运行的平台和常用的调试技巧。 A、运行平台 Flash + Asp结合使用的架构运行在Windows平台上面,可以用PWS服务器(Win98)或IIS服务器(Win2k,若找不到服务器,则需要Windows安装光盘重新安装)。将上面所生成的文件放在服务器的一个虚拟目录下面,启动服务器,在浏览器中就可以看到效果了。 另外,在Web的应用中经常要用到数据库,常用的数据库有Sql server、Access和mysql。使用数据库的时候,要在控制面板的odbc数据源中设置相应的odbc参数。 B、调试技巧 虽然是Flash与Asp的结合使用,但在调试中最好将Flash和Asp分别调试。比如我是这样做的,先调试Asp部分,写好Asp部分后,在IE中输入http://localhost/chat/send.asp?content=test,看看所显示的值是否是返回的值。其他的Asp部分都可以用类似的方法。 在Flash部分,调试时最常用的方法是打印,可以用一个文本框将某些东西显示出来,也可以用trace()函数,将变量显示出来。另外也可以用flash所自带的debugger工具,查看相应变量的值。 其实,Flash也好,Asp也好,调试时最重要的是思路清晰,流程清楚,这样的话,程序的bug也会比较少。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||