asp.net
一、 简介 Macromedia公司的Flash如今被广泛应用于互联网上以实现增强Web网站的内容描述。Macromedia最近发行的Flash(Flash 6和Flash MX)版本已经明确表示,Macromedia正在十分认真地考虑把Flash作为Web应用程序开发的接口选择。对于一个接口来说,Flash可能是一伟大的选择;然而,这个选择不是用它来替换商业逻辑,查询管理和安全。对于一个Web开发者来说,要实现真正强壮的性能和企业级能力,你需要.NET,Flash以及丰富的描述层支持,并联合微软的.NET技术。
Flash包括ActionScript-一种脚本语言,用来对动画添加交互性。从Flash 5中开始引入ActionScript脚本以来,Macromedia不断地改进它,从一个简单的脚本语言到相当牢固但仍存在许多局限性的编程特性。在Flash MX 2004中,Macromedia引入了ActionScript 2.0-它支持新的功能和新的方法来构建代码。为了更易于理解本文,你应该先阅读一些有关用ActionScript来构建Flash站点的基本知识。
Macromedia已经介绍了方法来实现容易地集成外部的数据到Flash应用程序中以允许更复杂和强壮的数据驱动应用程序。Flash和.NET都把它们自己推荐为跨平台的解决方案并且,由此而成为自然的搭挡。仍然,联接这两项技术不是简单的任务。这篇文章将同你一起讨论把Flash和.NET应用程序集成到一起的几种方法。
二、 集成Flash和ASP.NET
把Flash动画嵌入到ASP.NET页面
Macromedia Flash动画通过联合使用OBJECT和EMBED标签放置在.aspx页面中。EMBED标签最初是Netscape公司为了实现与Netscape 2.0或更高级的版本一起工作而开发的。以后,这个标签被微软的Internet Explorer(MSIE)所采用。为了实现浏览器兼容性,可以共同使用MSIE特定的OBJECT标签和EMBED标签。下面的HTML代码展示了用OBJECT标签和EMBED标签来嵌入一个Flash动画(*.swf文件)的情形:


![]() |
这个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客户端。 (三) 在Flash中创建一个XML包 一个XML数据包能容易被创建在Flash中,如下所示:var sendXML:XML = new XML("<userid>123456</userid>"); 发送一个XML包到一个服务器端页面-它使用ASP/ASP.NET并且处理返回XML数据包。 用法如下:xmlObject.sendAndLoad (URL: String, targetXMLObject: XML): Void 这个'xmlObject'是XML对象实例-它封装必须被发送到.aspx页面的XML;这个'URL'是指定XML对象的目的URL;'targetXMLObject'是该XML对象-它将接收从服务器端返回的信息。 sendAndLoad方法把一个XML包发送到一个服务器端模板并且收到一个XML包作为响应-这不同于XML类的send方法-它仅发送一个XML包而并不期盼任何类型的响应。这其中每个方法以其自身方式发挥作用,但是有一重要的区别:XML类的send方法以一个目标作为参数-它允许你打开一新的浏览器窗口或替换当前浏览器窗口中的内容,而sendAndLoad方法以一个XML包作为参数-它不会启动一个新的浏览器窗口。因为send方法打开一新的浏览器窗口,我们可以看到浏览器窗口本身的输出-这可能对调试极为有用。 注意:如果发出sendAndLoad调用的Flash文件在一个Web浏览器中运行,那么目标URL将与Flash动画处理同一个域中。如果你还需要与处于不同域中的应用程序进行通讯,那么可以参考站上的"Cross Domain Data Loading"以了解更多的信息。 下列图形中的代码显示出一个XML对象的sendAndLoad方法是怎样被用于与一个.aspx页面通讯以及是如何处理从服务器返回的XML的:

