在Flash电影中访问Access数据库

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和ASP,我们能够创建综合了Flash的图形功能和ASP的数据访问功能的解决方案。在本篇文章中,我们通过一个例子演示了如何将Flash电影与Access进行连接的技术。对其中的ASP代码进行适当的修改,我们就能够将Flash与SQL server或其他的数据库进行连接。


转载自:www.adobetop.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值