|
作者: Javis
简介
Macromedia的Flash总是被用来制作花里胡哨的网站序幕,用户一般都会跳过这一部分。而Flash 5能够与ASP或其他的由服务器生成的网页进行连接。
这篇文章将讨论如何将Flash电影与Access数据库进行连接、使用ASP网页查询数据库并将查询得到的信息传递给Flash电影。我们将通过创建一个简单的Flash地址簿来详细说明这一技术。
在创建该地址簿时,我们需要下面的工具:Macromedia 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网页代码:
上面的ASP网页代码能够从数据库表中读取记录,然后利用Server.URLEncode返回MIME格式的数据。
我们的ASP网页代码的典型输出可能如下所示:
提示:我们从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网页 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|