四、 为什么使用FlashVars
不借用FlashVars,也可以把变量放在HTML标签中-通过一个查询串形式把它添加到.SWF文件的URL后面,进而传递到一个Flash动画。这个方法可能存在一个问题-如果这个变量在.SWF文件加载时就需要的话,因为一个.SWF文件应该在从服务器发出请求数据之前就被下载和运行。变量值也可能是通过"Load Variables"方法和JavaScript在Flash中设置的。每一个这些方法都有惰散慢响应的缺点;这就是为什么开发者应该使用FlashVars来把数据从ASP.NET传递到Flash动画的原因。下图显示出以一个查询串方式传递变量的代码:
任何使用FlashVars传递的变量都能被在Flash动画的根层次(_level0)上进行存取。为了检索一个Flash动画内部的这些值,可以创建一个动态变量。下面ActionScript代码实现在Flash中为"initvalue"赋值:
_level0.initvalue = init; |
五、 Flash与数据库的通讯 一个Flash动画不能直接存取一个数据库。然而,Flash能够经由任何象ASP或ASP.NET等的服务器端技术与数据库进行通讯。有完成这项任务的若干方法。在本文中,我们将解释LoadVariables方法和sendAndLoad方法。
(一) 在动画片断中使用loadVariables方法
动画片断的loadVariables方法读来自一外部的文件或URL的数据并且为该动画片断的变量设置值。一旦该动画片断被实例化,在片断事件事件处理器中的动画片断的装载行动被初始化。在动画片断被初始化时,loadVariables方法可以被调用来加载变量。loadVariables方法是异步的调用并且Flash不会等待该调用的结果。当在一个loadVariables()行为中收到数据时,在片断事件事件处理器中的动画片断的数据行为被初始化。
为了展示这个方法的用法,这个示例根据从Flash动画中选择的ID从一个数据库检索用户的姓名和年龄。在下面的图中,动画的loadVariables方法被使用来装载数据到来自一个.aspx页面getUserData.aspx的动画片断。这里,ActionScript传递用户的id-他的名字和年龄将以一个到.aspx页面查询串的形式显示于Flash动画中。
这个getUserData.aspx页面从显示于下面的查询串中检索id值:
现在,ASP.NET能把这个值的id传递到.NET商业组件中。这个示例检索用户的姓名和年龄:
正如在本节中前面所提及的,动画片断的onClipEvent事件处理器的数据行为被初始化,当数据被在一个loadVariables()行为中收到时。在Flash动画中声明下列动态的变量:flashName和flashAge。下列图显示出ActionScript代码-它被用于Flash动画的onClipEvent处理器中以检索从.aspx页面传回的值。
注意:它是很重要的-与从.aspx页面中设置的变量是相同的。在此展示的示例中,在Flash动画中所存取的变量为"name"-它从.aspx页面中设置的变量是相同的(Response.Write("name="&User.name))。
这些值现在可以被使用于Flash动画内部。
(二) 从动画片断中使用sendAndLoad方法
在今天的互联网上,XML作为一种具有甚至能允许不同类型的应用程序之间顺利交换数据潜力的通用传输格式,以一个文档系统的形式占有重要地位。XML为应用程序之间的通讯-甚至在大范围的不同系统上的应用程序-提供一道网关机制。只要应用程序能够共享数据(通过HTTP,文件共享或另外的机制),并且有一个XML分析器,它们就能共享十分易于处理的结构化信息。
Flash MX支持XML数据传输并且有若干种象ASP和ASP.NET的服务器技术方法来实现交换XML。Flash MX能够通过使用XML类-load,send和sendAndLoad或Flash MX的新的XMLConnector来发送和接收XML数据包。其中,最后一个可以被用于通过HTTP发送和接收包并且把它们绑定到Flash层的UI部件上。
下面我们讨论一下FlashXML对象的sendAndLoad方法,这是在实现面向架构的XML数据通讯,异常处理及性能方面比较受欢迎的方法。我们使用这个简单示例:从一个Flash客户端把一用户的得分的详细资料插入到数据库并且回送一条成功或失败的消息给该Flash客户端。