Flash Remoting 简述
Macromedia Flash Remoting是什么?
使用Macromedia Flash Remoting的好处是什么?
Flash Remoting ActionScript
在FLASH中应用 Flash Remoting需要那类的ActionScript?
怎样实现FLASH与应用服务器的通信?
flashs应用服务网关URL是指向我服务器中目录上的什么地方?
怎样处理服务器上返回的数据?
怎样在FLASHMX UI组件上显示服务器返回的数据结果?

一、Flash Remoting 简述

1、Macromedia Flash Remoting是什么?
Macromedia Flash Remoting MX 在 Macromedia Flash 和您的 web 应用服务器之间提供了连接,能让您快速简单地创建 Rich Internet Applications。您可以利用其强大而又简单的编程模型,轻松地集成丰富 Macromedia Flash 内容及利用 Macromedia ColdFusion MX、Microsoft .NET、Java 和基于 SOAP 的 web 服务创建的应用程序。
通过读取数据库,你能制作出动态的和个性化的FLASH电影。例如你可以建一个信息公告栏,用户个人信息,或网上商城购物车来实现用户的购买和了解用户的喜好。

Flash remoting支持JAVA控件、XML文件同任何远程服务交换数据,包括企业级的JavaBean (EJB), Java class, JavaBeans, 或MBean。

2、使用Macromedia Flash Remoting的好处是什么?

·轻松地访问业务逻辑和 Web 服务
利用强大的新型 Macromedia Flash Remoting MX ActionScript 命令,您可以快速轻松地访问 web 应用服务、XML 文档和 web 服务。Flash Remoting MX 能让您将定义明确的应用程序 API 作为简单的 ActionScript API 显示给 Macromedia Flash,从而简化了 UI 设计人员和后端开发人员之间的工作流。

·简单的测试和调试
利用 NetConnection Debugger 简化最复杂的应用程序的测试和调试。

·简化的记录集处理
利用全新的 Flash Remoting MX API 进行记录集处理和数据绑定。简化 Macromedia Flash 中记录集的使用,让丰富客户机应用成为标准关系型数据库的前端。现在,您可以非常简单地将记录集数据绑定到滚动列表或数据栅格。

·完全支持 XML
无缝地访问能够接受或返回 XML 文档的任何远程服务。Flash Remoting MX 分析并将服务器上的 ActionScript XML 对象转换成 org.w3c.xml DOM,使 Macromedia Flash 能够无缝地访问可接受或返回 XML 文档(或同时具有两种功能)的任何远程服务(CFC、页面、EJB、Java 类、.NET DLL 等)。

二、Flash Remoting ActionScript

1、在FLASH中应用Flash Remoting需要那类的ActionScript?
如果连接到应用服务器,就必须在Flash电影的第一帧加上FlashRemoting包含ActionScript类的指令。代码如下:
#i nclude "NetServices.as"
#i nclude "NetDebug.as"
#i nclude "DataGlue.as"
include为Flash Remoting指令,为相关ActionScript类就提供了在客户端连接、交互和管理数据的能力。
连接FlashRemoting服务器、调用服务提供的函数,需要使用NetServices
调试FlashRemotin应用程序,需要使用NetDebug,他所提供的所有相关服务将在FlashMovie生成前被删除。
DataGlue函数可以有效的将一个记录集对象绑定到FlashMX UIs组件上

2、怎样实现FLASH与应用服务器的通信?
利用Remoting实现flash与服务器通信,必须在flash电影中利用NetServices函数createGatewayConnection和getService建立一个连接服务对象。下列的代码例子建立一被称为myService的服务对象。
#i nclude "NetServices.as"
if (inited == null)
{
// if条件语句 如果inited没有赋值,那么变量inited值就为真
// Services.setDefaultGatewayUrl函数提供了FlashRemoting服务URL
NetServices.setDefaultGatewayUrl("http://localhost:8100/flashservices/gateway");

// 连接 gateway
gateway_conn = NetServices.createGatewayConnection();

// 创建了FlashempireService服务对象。这个服务名称为myService,指向Web root上my目录下的一个名service的Cf组件。需要注意的是目录路径的划界线不是反斜杠
myService = gateway_conn.getService("my.service", this);
}
在这个例子中,使用setDefaultGatewayUrl函数在flash电影中指定了falshRemoting所有服务通信的URL。一旦使用setDefaultGatewayURL函数,就不需要再为每一个createGatewayConnection函数提供URL,这对于在FlashMX创作环境中进行开发时特别有用的。建立服务连接对象后,你就像下面的例子一样同应用服务器通信。
myService.remoteServiceMethodName(param1, "param2");

3、 flashs应用服务网关URL是指向我服务器中目录上的什么地方?
Flash Remoting服务网关的url(如:"http://localhost:8100/flashservices/gateway")是不存在的,仅仅是一个映射而已。不要花心思去寻找 wwwroot下面的指向目录。

4、怎样处理服务器上返回的数据?
调用服务对象中的函数,使用服务对象名后跟随一个函数名,如下例:
myService.getTemperature("New York");
在这个例子中,getTemperaturn函数作为一个公开的方法或者应用程序页面存在于应用服务器中,该函数传递了一个字符串参数,“New York”,要传递多个参数到Service函数,需要包含一个Service函数调用的逗号分割值的列表,例如:
server.getTemperature("New York", 1998, "average");
在这个例子里,service函数传递了三个参数,城市(“New York”),年(1998)以及指令(“average”)。
注意:参数必须按照service函数要求的顺序出现。


5、怎样在FLASHMX UI组件上显示服务器返回的数据结果?
要容易地显示记录集对象的内容,使用 Flash MX用户界面( UI)组件ListBox和ComboBox。对任一UI组件,使用DataGlue函数,包括bindformatstrings和bindformatfunction。 DataGlue函数绑定一个数据提供者到一个数据用户,比如绑定记录集对象到combobox组件。 数据作为标准的label/data配对出现。
DataGlue函数并不对原始数据提供者的数据进行复制,不过,数据是在数据用户需要时从原始数据供应者处取出, 该数据用户可以使用数据像任何其他的参数。每个记录的标签是用来显示纪录的文本,每个记录的data是由该数据用户的getValue函数返回的value,bindFormatStrings函数让你格式化在函数调用中的数据。 例如∶DataGlue.bindFormatStrings(myComboBox, myRecordSet, "#parkname# ?(#parktype#)", "#city#, #state# #zipcode#");
在这个例子中, myComboBox表示Flash电影中的一个combobox组件, myRecordSet表示RecordSet对象。 parkname, parktype, city, state,和zipcode变量表示记录字段名称。 Flash电影显示了parkname和parktype变量。 city, state,和zipcode变量在用户选择该记录的时候返回。 你可以使用getValue函数回送这些变量值。
bindformatstrings函数让你调用一个函数去格式化数据。 你可以如下例所示创建该函数:
function myFormatFunction ( record )
{
// the label is the parkname record field, translated to lower case
var theLabel = record.parkname.toLowerCase();

// the data is the length of the parkname record field
var theData = record.parkname.length;

// return the label and value to the caller
return {label: theLabel, data: theData};
}
//call the bindFormatFunction
DataGlue.bindFormatFunction(dataView2, result, myFormatFunction);
在这个例子中, record表示一记录集对象, dataview2表示Flash电影中的用户界面组件
posted on 2006-08-16 01:09  榻榻米  阅读(514)  评论(0编辑  收藏  举报