让Flash与数据库通信----制作属于自己的本本

有很多网友都想有自己的Flash留言本,但是又不知道怎么做,今天就让我们学习一下flash与数据库的通信原理,做一个自己的留言本。
首先,让我们来看一下,Flash是怎么样读取文本文件里面的变量的。
Falsh 读取文本文件中的变量有二种方式:
1. 用loadVariables/loadVariablesNum获取变量;
2. 用LoadVars对象。
这次我们用相对简单些的第一种方法。
首先建立一个文本文件,命名为try.txt,内容如下:
程序代码
try1_txt=我要自己的本本&try2_txt=Hello world!


下一步,打开你的Flash新建一个文件,在第一帧新建两个文本框,分别命名为txt1,txt2中输入如代码:
程序代码
+展开
-ActionScript
System.useCodepage = true;//防止乱码出现 
stop(); 
loadVariables("try.txt"this);//加载变量 
param_interval = setInterval(this"jiazai", 100);//防止加载未完成,每隔0.1秒调用一次jiazai函数 
// 判断是否加载并完成相关功能的函数 
var jiazai = function () { 
    if (try1_txt != undefined) { 
        trace("加载完成,下面是获取的变量值"
        txt1.text = try1_txt; 
        txt2.text = try2_txt; 
        clearInterval(param_interval);//清除时钟 
        play(); 
    } 
}; 



下载原文件

下面我们把try.txt文件改成try.asp,内容不变,别忘了把这句AS也改一下:
loadVariables("try.txt", this);//加载变量
改成:
loadVariables("try.asp", this);//加载变量
再测试一下,是不是一样的结果。对,应该是一样的结果。这下你应该知道,Flash读取文件对文件的后缀没有要求。

接下来,我们把try.asp的内容也改一下,改成:
程序代码
+展开
-HTML
<% 
response.write "try1_txt=我要自己的本本" 
response.write "&try2_txt=Hello world!" 
%> 


再测试一下,噫,这下怎么不行了,可能你会感到奇怪吧!!
你想想你是在什么环境下测试的!!哈哈,明白了吧!
对,你应该在iis服务器下面测试,赶快把这两个文件移到iis服务器下面去吧!
再测试,嗯,这回成功了。(不要用物理路径哟)
你也可以看下面这个链接:

http://home.goofar.com/mypage/load2.swf

这下你可以用ASP连接数据库,就是用ASP读取数据库,然后用response.write输出成Flash能读的那种格式。有朋友会问,我的数据库里面记录有很多,那怎么办?
嗯,这个问题问得好,这种情况下,我们可以用String对象的split方法,怎么实现呢?
用asp将各记录写成如下方式:

txt1=rec1#^rec2#^rec3......&txt2=reco1#^reco2#^reco3......

然后就用split方法,将txt1,txt2分割,并存入一个数组中,备用。
下面是写的一个很简单的Flash读取数据库的例子,效果:http://home.goofar.com/mypage/load3.swf

下载原文件

Asp文件:try1.asp(这个我就不多讲了)
程序代码
+展开
-HTML
<% set conn= Server.CreateObject("adodb.connection"
con="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("try.mdb"
conn.open con 
set rs= Server.CreateObject("adodb.recordset"
sql="select * from person order by id desc" 
rs.open sql,conn,1,3 

'删除最后一个多余分隔符的函数 
function jiequ(str) 
str=trim(str) 
jiequ=left(str,len(str)-2) 
end function 
while not rs.eof 
Person_name=Person_name&rs("name")&"^#"'其中“^#”是分隔符 
Person_birthday=Person_birthday&rs("birthday")&"^#" 
Person_sex=Person_sex&rs("sex")&"^#" 
Person_tel=Person_tel&rs("tel")&"^#" 
Person_joindate=Person_joindate&rs("joindate")&"^#" 
rs.movenext 
wend 
Person_name=jiequ(Person_name) 
Person_birthday=jiequ(Person_birthday) 
Person_sex=jiequ(Person_sex) 
Person_tel=jiequ(Person_tel) 
Person_joindate=jiequ(Person_joindate) 
Response.Write("Person_name="
Response.Write(Person_name) 
Response.Write("&"
Response.Write("Person_sex="
Response.Write(Person_sex) 
Response.Write("&"
Response.Write("Person_birthday="
Response.Write(Person_birthday) 
Response.Write("&"
Response.Write("Person_tel="
Response.Write(Person_tel) 
Response.Write("&"
Response.Write("Person_joindate="
Response.Write(Person_joindate) 
%> 

As代码:放在第一帧:
程序代码
+展开
-ActionScript
System.useCodepage = true;//防止乱码出现 
stop(); 
//定义存储字段的数组 
var person_name_arr = new Array(); 
var person_sex_arr = new Array(); 
var person_tel_arr = new Array(); 
var person_birthday_arr = new Array(); 
var person_joindate_arr = new Array(); 
loadVariables("try1.asp"this);//加载变量 
// 判断是否加载 
var jiazai = function () { 
    if (Person_name != undefined) { 
        //trace("加载完成,下面是获取的变量值"); 
        person_name_arr = Person_name.split("^#");//用split函数分割string 
        person_sex_arr = Person_sex.split("^#"); 
        person_tel_arr = Person_tel.split("^#"); 
        person_birthday_arr = Person_birthday.split("^#"); 
        person_joindate_arr = Person_joindate.split("^#"); 
        for (i=0; i            this.attachMovie("show""show"+i, i);//加载库中的show 
            //attachMovie不会用的点 

            with (this["show"+i]) { 
                _x = 35; 
                _y = 16+20*(i+1); 
                Personname.text = person_name_arr;//为各字段赋值 
                Personsex.text = person_sex_arr; 
                Persontel.text = person_tel_arr; 
                Personbirth.text = person_birthday_arr; 
                Personjoindate.text = person_joindate_arr; 
            } 
        } 
        clearInterval(param_interval); 
        play(); 
    } 
}; 
// 
param_interval = setInterval(this"jiazai", 100); 



呵,以上就是flash 读取数据库的基本原理,说穿了也就是flash与普通文本进行通信,只不过,这个文本是由iis服务器生成的。
各位朋友有不懂的,就留言。读取部分就写到这里了,下一节我给各位讲讲写数据库的部分!

加支付宝好友偷能量挖...


评论(0)网络
阅读(119)喜欢(0)flash/flex/fcs/AIR