作者: 边城浪子
版权所有: 边城浪子
大家好,边城浪子很久没有写教程了。今天,我来介绍一下怎样通过 Flash Remothing 来完成 ColdFusion MX 和 Flash MX 之间的通信。我们的例子是要帮助大家完成一个简单的数据库检索功能。
需要的软件: Flash Remoting 组件
ColdFusion MX
文本编辑器
Flash MX
Microsoft Access 2000(非必须)
需要的源文件 请在
这里 下载(包括 Database、ColdFusion Components 和 Flash 代码,136 KB)。
第一步:准备好 Flash MX 和 ColdFusion MX Flash MX 想必大家是一定准备好了。
ColdFusion MX 的获取和安装方法请看小魔女提供给闪客帝国的教程:在这里(Macromedia ColdFusionMX 开发者)。
在这个例子里面,我的 ColdFusion MX 是以 Stand Alone 方式安装在 C:\CFusionMX 下,端口是 8500。
第二步:安装 Flash Remoting 这个是最关键的东西,请到这里下载:http://www.macromedia.com/support/flash/flashremoting/。
安装很容易,看看这个画面,就不用我多说了。安装完成以后,没有什么反应,只是在 Macromedia 程序组里面多了一个帮助文档。不要奇怪,是正常的。
第三步:准备数据库 为了方便起见,我这里采用 Access 的数据库作为数据源。在这里,我把数据库的结构和数据向大家说明一下,以便大家了解后面的程序。如果您没有 Access 软件,那么也不要紧,请在上面“需要的源文件”处下载,可以不需要建库和表,直接使用。
建立一个 flashempire 数据库,再建立一个名字叫做 flashempire 的表,我们准备在这个表里面保存闪客帝国部分成员的信息。下面是表的结构,有三个字段:id、name、position。
输入内容,我的数据如下,您可以自己随便输入,也可以下载我已经做好的数据库表。

将数据库保存,我是保存在“我的文档(My Documents)”下面,命名为 flashempire.mdb。
这样,我们的数据库就有了,剩下的就是查询功能的实现了。
第四步:ColdFusion MX 数据源配置 因为我们要使用 Flash MX 通过 Flash Remoting 读取 ColdFusion MX 提供的数据,所以,必须要将刚刚建好的数据库和 ColdFusion MX 联系起来,这就需要在 ColdFusion MX 里面建立一个新的数据源,很简单,按照下面的步骤。
进入 ColdFusion MX 的管理界面,我的是:http://localhost:8500/CFIDE/administrator/index.cfm,您如果是默认安装,也应该是这个。输入密码以后出现管理界面,选择数据源(Data Sources)项目:
右边会出现表单,我们给它去个名字叫做 flashempire_test,然后选择 Microsoft Access,就可以点“Add”按钮提交了。

然后会出现下面的画面:

在 Database File 一项,点击 Browse Server 找到刚刚保存的 flashempire.mdb 文件,按“Submit”提交就可以了。
好,现在,数据源 flashempire_test 已经设置好了,下面,改为读取数据做准备了。
第五步:ColdFusion MX Components 编写 不要害怕,很简单。
跑到 C:\CFusionMX\wwwroot 下,建立一个叫做 flashempire_test 的目录,进入这个目录,用文本编辑器编辑一个文件,给他取名字叫做 members.cfc。(注意:这个步骤其实可以通过 Dreamweaver MX 来自动生成,但是为了便于大家理解,我还是采用原始的手工编写方法)
文件如下:
< cfcomponent >
< cffunction name="getAllFlashempireMembers" access="remote" returnType="query" output="true" >
< cfquery name="AllFlashempireQuery" datasource="flashempire_test" >
SELECT * FROM flashempire
< /cfquery >
< cfreturn AllFlashempireQuery >
< /cffunction >
< cffunction name="getFlashempireMembers" access="remote" returnType="query" output="true" >
< cfargument name="Name" type="string" >
< cfquery name="FlashempireQuery" datasource="flashempire_test" >
SELECT * FROM flashempire WHERE name like '%#Name#%'
< /cfquery >
< cfreturn FlashempireQuery >
< /cffunction >
< /cfcomponent > 我来解释一下,< cfcomponent >< /cfcomponent >只见就是程序的主体,我们在这里写了两个函数,也就是两个< cffunction >< /cffunction >之间的内容,第一个叫做 getAllFlashempireMembers,功能是取得所有的成员列表。这里定义 access="remote" returnType="query" output="true",即进行远程检索。我们还要定义数据源,不然系统不会知道要从那里读取数据,所以还要加上< cfquery >< /cfquery >,并且个这个检索取一个名字,叫做 AllFlashempireQuery。中间关键的部分要有执行的 SQL 语句,如果您不了解 SQL 语句,那么应该学习相关的知识,这个是必须要学习的。熟悉 SQL 语句的闪客应该看得明白,这是最简单的一句“ SELECT * FROM flashempire”,即提取 flashempire 表中的所有数据。最后,用< cfreturn >返回检索结果。
第二个叫做 getFlashempireMembers,同上一个不同的是,它多了一个< cfargument >,这是一个变量,它将接收远程传来的数据,然后再进行处理。由于上一个已经介绍过,这里就不多讲了。这个函数的功能是:从 flashempire 表中提取所有 name 字段内容和变量 Name 类似的数据。
好,ColdFusion MX Components 也做好了,下面就等着从远程调用了。所谓远程嘛,当然是我们的 Flash MX 了!