Macromedia的Flash总是被用来制作花里胡哨的网站序幕,用户一般都会跳过这一部分。而Flash 5能够与ASP或其他的由服务器生成的网页进行连接。
这篇文章将讨论如何将Flash电影与Access数据库进行连接、使用ASP网页查询数据库并将查询得到的信息传递给Flash电影。我们将通过创建一个简单的Flash地址簿来详细说明这一技术。
在创建该地址簿时,我们需要下面的工具:Macromedia adobe Flash 5、IIS 4.0或IIS 5.0和微软的Access数据库软件。
基础知识
Flash电影不能直接查询数据库,但它能够访问ASP网页,而ASP网页能够查询数据库。这就需要用到如下所示的Flash的ActionScript函数——loadVariables:
loadVariables(URL, location);
loadVariables函数能够获得指定的URL的内容,并使用这些内容设置Flash电影中的变量。这些内容必须符合MIME格式,例如,如果URL中包含有带有下列内容的网页:
Var1=Test&Var2=Demo
Flash电影中的变量Var1的值将被设置为“Test”,变量Var2的值将被设置为“Demo”。这些变量就可以通过Flash ActionScript来改变Flash电影。在我们的例子中,我们将使用这种方法从Access数据库中通过ASP网页向Flash电影电影中传输数据。
数据库设计
首先,我们来创建例子中使用的数据库。由于我们的地址簿非常地简单,因此数据库中只包含一个名字为Contacts的数据库表,该数据库表有5个字段:ContactID、Name、Telephone、City和Notes。
数据库表的名字是AddressBook.mdb,而且与我们下面将要创建的ASP网页和SWF文件存储在同一个目录中。(SWF文件是Flash动画电影的文件格式,目前有90%以上的互联网用户无须安装专门的插件就能够欣赏SWF格式的内容。)
ASP设计
下面我们来讨论从地址簿数据库表中读取记录的ASP网页代码:
<%
'创建数据库连接
Set DataConn = Server.CreateObject("ADODB.Connection")
DataConn.Open "Driver=Microsoft Access Driver (*.mdb);DBQ=" &
Server.MapPath("AddressBook.mdb")
Set cmdTemp = Server.CreateObject("ADODB.Command")
Set rstContacts = Server.CreateObject("ADODB.Recordset")
cmdTemp.CommandText = "Select * From Contacts"
cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = DataConn
rstContacts.Open cmdTemp, , 1, 3
rstContacts.Move CLng(Request("Record"))
'输出MIME格式的内容
Response.write "Name=" & Server.URLEncode(rstContacts("Name")) & "&"
Response.write "Telephone=" & Server.URLEncode(rstContacts("Telephone")) & "&"
Response.write "City=" & Server.URLEncode(rstContacts("City")) & "&"
Response.write "Notes=" & Server.URLEncode(rstContacts("Notes")) & "&"
Response.write "TotalRecords=" & rstContacts.RecordCount
rstContacts.Close
DataConn.Close
%>
上面的ASP网页代码能够从数据库表中读取记录,然后利用Server.URLEncode返回MIME格式的数据。
提示:我们从ASP网页代码中多输出了一些信息(在数据库表字段之外),TotalRecords是指数据库字表中现有的记录数,它能够使Flash知道是否已经处理完了地址簿中的记录。
我们的ASP网页代码将以GetDetail.asp的文件名与数据库表和Flash文件存储在同一个目录中。
Flash设计
有了数据库表和ASP网页代码,下面就该设计我们的地址簿应用的脸面━━Flash电影了。我们首先建立一个新的电影,并在其中插入一个空白的电影片断。
该片断将被设计为我们的地址簿,它将包含有5个文本字段(用来显示我们的信息)和二个按钮(用来浏览记录的左右箭头)。
文本字段将被创建为动态文本,每个文本字段将被赋给一个变量名字,这将使我们能够在ActionScript中控制它们的内容。
我们在影片片断中加入一个动作,使影片加载完毕后,加载输出内容为第一个记录的ASP网页代码,实现这一功能的ActionScript如下所示:
onClipEvent(load)
{
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=0", this);
}
它只是简单地初始化了CurrentRecord变量(我们将使用它保存在地址簿中的位置),然后加载GetDetails.asp网页代码,该代码会加载第一个记录。
loadVariables函数的一个重要特性是它的执行方式是异步的。也就是说,Flash在执行完loadVariables命令后,它不会停下来等待结果,数据没有必要在等待程序找到loadVariables函数之后的记录时才进行加载。因此,我们需要一种机制,让Flash电影在数据加载后更新文本字段。当Flash完成变量的加载后,就会执行这一动作。实现该功能的ActionScript代码:
onClipEvent(data)
{
strName = Name;
strTelephone = Telephone;
strCity = City;
strNotes = Notes;
strPosition = "Record " add String(CurrentRecord+1) add " of " add String(TotalRecords);
}
上面的代码的作用是将从ASP网页代码中获取的变量传输到在Flash电影片断中添加的文本框中,它还会更新表明我们正在显示哪个记录的文本字段。
最后,我们还需要给左、右箭头指定动作,这样才能对整个地址簿进行操作。下面是右箭头(移到下一条记录)的代码:
on (release)
{
CurrentRecord++;
if (CurrentRecord == TotalRecords)
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=" add String(CurrentRecord), this);
}
上面的代码对CurrentRecord执行加1操作,并检查是否已经超过了地址簿中的最后一个记录。如果已经超过了最后一个记录,则将CurrentRecord设置为0,返回地址簿中的第一个记录。代码然后从ASP网页中加载与记录相关的变量,记录加载后,Flash将再次调用onClipEvent(data),更新我们看到的文本框。
左箭头(移到前一个记录)的代码与上面的代码基本上相同,但它将对CurrentRecord执行减1操作。
至此,我们就全部完成了地址簿应用的设计工作。从浏览器中执行SWF文件后,它就会将第一个记录加载到Flash变量中(在onClipEvent(load)动作中),onClipEvent(load)就会更新向我们显示信息的文本字符框。
点击任何一个导航按钮将会触发访问ASP网页代码、加载新记录的动作,然后就会执行onClipEvent(data)动作。
结束语
这篇文章将讨论如何将Flash电影与Access数据库进行连接、使用ASP网页查询数据库并将查询得到的信息传递给Flash电影。我们将通过创建一个简单的Flash地址簿来详细说明这一技术。
在创建该地址簿时,我们需要下面的工具:Macromedia adobe Flash 5、IIS 4.0或IIS 5.0和微软的Access数据库软件。
基础知识
Flash电影不能直接查询数据库,但它能够访问ASP网页,而ASP网页能够查询数据库。这就需要用到如下所示的Flash的ActionScript函数——loadVariables:
loadVariables(URL, location);
loadVariables函数能够获得指定的URL的内容,并使用这些内容设置Flash电影中的变量。这些内容必须符合MIME格式,例如,如果URL中包含有带有下列内容的网页:
Var1=Test&Var2=Demo
Flash电影中的变量Var1的值将被设置为“Test”,变量Var2的值将被设置为“Demo”。这些变量就可以通过Flash ActionScript来改变Flash电影。在我们的例子中,我们将使用这种方法从Access数据库中通过ASP网页向Flash电影电影中传输数据。
数据库设计
首先,我们来创建例子中使用的数据库。由于我们的地址簿非常地简单,因此数据库中只包含一个名字为Contacts的数据库表,该数据库表有5个字段:ContactID、Name、Telephone、City和Notes。
数据库表的名字是AddressBook.mdb,而且与我们下面将要创建的ASP网页和SWF文件存储在同一个目录中。(SWF文件是Flash动画电影的文件格式,目前有90%以上的互联网用户无须安装专门的插件就能够欣赏SWF格式的内容。)
ASP设计
下面我们来讨论从地址簿数据库表中读取记录的ASP网页代码:
<%
'创建数据库连接
Set DataConn = Server.CreateObject("ADODB.Connection")
DataConn.Open "Driver=Microsoft Access Driver (*.mdb);DBQ=" &
Server.MapPath("AddressBook.mdb")
Set cmdTemp = Server.CreateObject("ADODB.Command")
Set rstContacts = Server.CreateObject("ADODB.Recordset")
cmdTemp.CommandText = "Select * From Contacts"
cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = DataConn
rstContacts.Open cmdTemp, , 1, 3
rstContacts.Move CLng(Request("Record"))
'输出MIME格式的内容
Response.write "Name=" & Server.URLEncode(rstContacts("Name")) & "&"
Response.write "Telephone=" & Server.URLEncode(rstContacts("Telephone")) & "&"
Response.write "City=" & Server.URLEncode(rstContacts("City")) & "&"
Response.write "Notes=" & Server.URLEncode(rstContacts("Notes")) & "&"
Response.write "TotalRecords=" & rstContacts.RecordCount
rstContacts.Close
DataConn.Close
%>
上面的ASP网页代码能够从数据库表中读取记录,然后利用Server.URLEncode返回MIME格式的数据。
提示:我们从ASP网页代码中多输出了一些信息(在数据库表字段之外),TotalRecords是指数据库字表中现有的记录数,它能够使Flash知道是否已经处理完了地址簿中的记录。
我们的ASP网页代码将以GetDetail.asp的文件名与数据库表和Flash文件存储在同一个目录中。
Flash设计
有了数据库表和ASP网页代码,下面就该设计我们的地址簿应用的脸面━━Flash电影了。我们首先建立一个新的电影,并在其中插入一个空白的电影片断。
该片断将被设计为我们的地址簿,它将包含有5个文本字段(用来显示我们的信息)和二个按钮(用来浏览记录的左右箭头)。
文本字段将被创建为动态文本,每个文本字段将被赋给一个变量名字,这将使我们能够在ActionScript中控制它们的内容。
我们在影片片断中加入一个动作,使影片加载完毕后,加载输出内容为第一个记录的ASP网页代码,实现这一功能的ActionScript如下所示:
onClipEvent(load)
{
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=0", this);
}
它只是简单地初始化了CurrentRecord变量(我们将使用它保存在地址簿中的位置),然后加载GetDetails.asp网页代码,该代码会加载第一个记录。
loadVariables函数的一个重要特性是它的执行方式是异步的。也就是说,Flash在执行完loadVariables命令后,它不会停下来等待结果,数据没有必要在等待程序找到loadVariables函数之后的记录时才进行加载。因此,我们需要一种机制,让Flash电影在数据加载后更新文本字段。当Flash完成变量的加载后,就会执行这一动作。实现该功能的ActionScript代码:
onClipEvent(data)
{
strName = Name;
strTelephone = Telephone;
strCity = City;
strNotes = Notes;
strPosition = "Record " add String(CurrentRecord+1) add " of " add String(TotalRecords);
}
上面的代码的作用是将从ASP网页代码中获取的变量传输到在Flash电影片断中添加的文本框中,它还会更新表明我们正在显示哪个记录的文本字段。
最后,我们还需要给左、右箭头指定动作,这样才能对整个地址簿进行操作。下面是右箭头(移到下一条记录)的代码:
on (release)
{
CurrentRecord++;
if (CurrentRecord == TotalRecords)
CurrentRecord = 0;
loadVariables ("getdetails.asp?Record=" add String(CurrentRecord), this);
}
上面的代码对CurrentRecord执行加1操作,并检查是否已经超过了地址簿中的最后一个记录。如果已经超过了最后一个记录,则将CurrentRecord设置为0,返回地址簿中的第一个记录。代码然后从ASP网页中加载与记录相关的变量,记录加载后,Flash将再次调用onClipEvent(data),更新我们看到的文本框。
左箭头(移到前一个记录)的代码与上面的代码基本上相同,但它将对CurrentRecord执行减1操作。
至此,我们就全部完成了地址簿应用的设计工作。从浏览器中执行SWF文件后,它就会将第一个记录加载到Flash变量中(在onClipEvent(load)动作中),onClipEvent(load)就会更新向我们显示信息的文本字符框。
点击任何一个导航按钮将会触发访问ASP网页代码、加载新记录的动作,然后就会执行onClipEvent(data)动作。
结束语
通过结合使用Flash和ASP,我们能够创建综合了Flash的图形功能和ASP的数据访问功能的解决方案。在本篇文章中,我们通过一个例子演示了如何将Flash电影与Access进行连接的技术。对其中的ASP代码进行适当的修改,我们就能够将Flash与SQL server或其他的数据库进行连接。
转载自:www.adobetop.com