Macromedia Flash* 已广泛应用于互联网,它能够增强网站的展示内容。Macromedia Flash的最新版本已明确显示了,Macromedia 公司非常重视使 Flash 成为 Web 应用开发的一种理想界面选择。作为界面,Flash 是一个功能强大的选择;然而,它不能取代业务逻辑、查询管理以及安全性。为增强性能和企业能力,您需要使用 .NET*。对于 Web 开发人员而言,具备强大演示支持的 Flash 与微软公司的 .NET 技术能够进行有效的结合。
Flash 带有 ActionScript*(一种脚本语言),能为电影添加交互能力。最初在 Flash 5 中引入 ActionScript 时,Macromedia 公司就将其从简单的脚本语言发展成为一种带有可靠但有限的编程特性的脚本语言。在 Flash MX 2004 中,Macromedia 公司引入了 ActionScript 2.0,该脚本语言支持以全新的能力和方式构建并处理代码。为了充分理解本文内容,您需要首先阅读并理解用于创建一个 Flash 站点的
ActionScript 基础知识 *。
将 Flash 与外部数据相连
有三种方法可以将外部数据与 Flash 电影连接在一起:FlashVars、 LoadVars 以及全新的 FlashRemoting 技术。其中最简单的方法是利用 FlashVars 传递代码 HTML 部分中的变量,将外部数据从一个 .aspx 页面传递至 Web 页面中嵌入的 Flash 电影。利用 FlashVars 设置的变量值可在 Flash 电影的根级别上使用。必须在 OBJECT 和 EMBED 标签中为 FlashVars 属性赋值,这是为了确保它能在所有的浏览器中使用。
以下代码显示的是使用 OBJECT 标签的 FlashVars
<PARAMName="FlashVars"Value="init=yes&check=true">
以下显示的是使用 EMBED 标签的 FlashVars
<EMBEDsrc="test.swf"FlashVars="init=yes&check=true"></EMBED>
欲了解更多关于 FlashVars 的知识,请参阅 Macromedia 公司的文章:
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_16417 *
让 Flash 与数据库通信
Flash 不能直接访问数据库。但是,Flash 可通过任意服务器端技术(如 ASP 或 ASP.NET)与数据库进行通信。有几种方法可实现该操作。在本文中,我们将讨论
LoadVariables 方法和
sendAndLoad 方法。
利用来自电影剪辑的 loadVariables 方法电影剪辑的
loadVariables 方法从外部文件或 URL 中读出数据,并为电影剪辑的变量设置值。当电影剪辑完成初始化后,启动电影剪辑
onClipEvent 事件处理程序的
load 活动。当启动电影剪辑时,能够调用
loadVariables 方法来加载变量。
loadVariables 方法为异步调用,Flash 不会等待调用的结果。当在
loadVariables() 活动中接收数据时,会启动电影剪辑
onClipEvent 事件处理程序的
data 活动。
为了演示如何使用该方法,下面的示例根据 Flash 电影中选择的 ID,从数据库中检索用户的姓名和年龄。在下图的代码中,使用电影的
loadVariables 方法,将数据从 .aspx 页面(
getUserData.aspx)加载至电影剪辑中。ActionScript 将用户的
id 作为查询字符串传递至.aspx 页面,由此在 Flash 电影中显示出对应
id 的
name 和
age。
getUserData.aspx 页面从查询字符串中获取
id 值,如下图所示:
现在,ASP.NET 能够将该
id 值传递至 .NET 业务组件。下面的示例用来检索用户的
name 和
age:
如本节开始所述,当在
loadVariables() 活动中接收数据时,启动电影剪辑
onClipEvent 事件处理程序的
data 活动。在 Flash 电影中声明以下动态变量:
flashName 和
flashAge。下图显示 Flash 电影的事件
onClipEvent 处理程序使用的 ActionScript 代码,来检索从 .aspx 页面返回的值。
注意:非常重要的一点是,在 Flash 电影中存取的变量与在 .aspx 页面中设置的变量是相同的。在此处演示的示例中,Flash 电影中存取的变量值为“
name”,该值与在 .aspx 页面(
Response.Write(“name=” & User.name) )中设置的值相同。
现在,可将这些值应用于 Flash 电影中。
使用电影剪辑的 sendAndLoad 方法在当今的互联网中,XML 作为通用转换格式,支持不同种类的应用平稳地交换数据,它实现了其作为文档系统的尽可能多的承诺。XML 提供一个网关,用于在应用(甚至在显著不同的系统上)之间进行通信。当应用能够共享数据(通过 HTTP(超文本传输协议)、文件共享或其它机制)并具有 XML 解析器的时候,则这些应用可共享易于处理的结构化信息。
Flash MX 支持 XML Data Transfer(数据传输),并具有几种与服务器技术(如 ASP* 和 ASP.NET)交换 XML 的方式。Flash MX 能够利用 XML 类(
load、
send 和
sendAndLoad)或 Flash MX 的新型
XMLConnector 发送和接收 XML 数据包。通过 HTTP 并将数据包捆绑至 Flash 中 UI 组件的方式,
XMLConnector 可用来发送和接收这些数据包。
本节讨论 Flash XML 对象的
sendAndLoad 方法。在 XML 数据通信、异常处理以及性能有关的架构方面,这是一种首选的方法。我们使用如下简单的示例:从 Flash 客户端中,将用户的得分情况记入数据库,并将“通过”或“未通过”的消息返回 Flash 客户端。
在 Flash 中创建一个 XML 包能够轻松地在 Flash 中创建 XML 数据包,如下所示:
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 方法将目标 XML 包作为参数,允许您打开一个新的浏览器窗口或替换当前的浏览器窗口中的内容,而 sendAndLoad 方法虽然将目标 XML 包作为参数,但不能启动新的浏览器窗口。因为 send 方法打开一个新的浏览器窗口,我们可以看到浏览器窗口自身的输出情况,这对于调试可能会非常有用。
注意: 如果调用 sendAndLoad 的 Flash 文件正运行于 Web 浏览器,那么,目标 URL 应该与 Flash 电影位于相同的域中。如果您仍需与不同域中的应用进行通信,则请在www.macromedia.com * 的“跨域数据加载(Cross Domain Data Loading)”中查看更多的信息。
下图显示了如何使用 XML 对象的 sendAndLoad 方法与一个 .aspx 页面进行通信,以及如何处理从服务器返回的 XML:
以上代码进行如下操作:
- 将 XML 字符串加载至 XML 对象“userscore_xml”中。该实例保留将发送至远程服务器端 ASP.NET 页面的 XML。
- 为 XML 对象“ResponseXMLObj_xml”设置 ignoreWhite 的属性。该 XML 对象实例保留从服务器返回的 XML 包。
- 调用 XML 对象(“userscore_xml”)的 sendAndLoad 方法来发送 XML 至服务器端 .aspx 页面(http://localhost/MyTestApp/scoring.aspx)并将返回的 XML 包存储至 XML 对象实例“ResponseXMLObj_xml”中。
- 设置 XML 对象“ResponseXMLObj_xml”的 onLoad 方法。Flash 接收从服务器端 .aspx 页面返回的 XML 响应,该 XML 响应在 XML 对象的 onLoad 方法中进行处理。
接着,该方法对接收的 XML 包进行解析,以便在 Flash 客户端显示出必要的消息。
接收从 ASPX 页面中的 Flash 发出的 XML 包下图显示了实现这一操作的代码:
以上代码进行如下操作:
- 接收从 Flash 客户端发送的 XML。(xmlDoc.Load(Request.InputStream))
- 解析接收的 XML,并将其传递至业务组件,从而插入数据库。
- 构成将其传递回 Flash 客户端的 XML 消息。相应地处理业务层中产生的 Success 和 Exception 条件,并将其转换为相应的 XML 消息传递回 Flash 客户端。Flash 客户端接收这些 XML 消息并相应地显示出
以下是一些技术文章:
传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”("Experience Matters"),而丰富互联网应用程序(Rich Internet Applications,缩写为RIA)的出现也就是为了解决这个问题。
http://www.flash-db.com/Board/index.php
http://www.capescience.com/
Consuming Amazon with Flash Remoting
http://www.oreillynet.com/pub/a/javascript/2003/01/09/flash.html
JS/Flash 整合开发工具包下载
http://www.cnblogs.com/MarkStudio/archive/2005/06/26/181370.html
为flash构建asp.net Webservice
http://www.blueidea.com/tech/multimedia/2003/1094.asp
ASP.NET Topic Center
http://www.macromedia.com/devnet/dotnet/
FLEX,Central,AS 2.0,MXML,SWC,
http://blog.joycode.com/eric/category/379.aspx
FLEX
http://www.macromedia.com/cn/software/flex/
flash组件体系
http://www.cahf.net.cn/blog/library/component/Help/
flash MX 2004 PRO+COLDFUSION+PHP+MYSQL PROVECT
http://www.cahf.net.cn/blog/library/
7yue Weblog
http://www.7yue.com/
RIA演示
http://www.macromedia.com/resources/business/rich_internet_apps/overview/
flashanywhere
http://www.flashanywhere.net/mxna/
Flash MX 2004及RIA相相关工具下载收集
http://www.netbei.com/Article/pic/Flash/flash8/200409/2492.html
flash数据开发教程
http://download.macromedia.com/pub/documentation/cn/flash/mx2004/data_tutorials.pdf