找到了一个
Flex RemoteObject结合CFC使用的例子.在这里我来详细讲一下.
主要三个文件.
Flex: main.mxml
AS: Test.as
CFC: test.cfc先教大家
配置一下.
main.mxml放到Flex的根目录下.
Test.as放到Flex的根目录下的cfcRemoting文件内.
test.cfc放到Coldfusion的根目录下的cfcRemoting文件内.main.mxml文件的内容:
程序代码: |
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=" http://www.macromedia.com/2003/mxml" > <mx:Script> <![CDATA[ var dependency:cfcRemoting.Test; ]]> </mx:Script> <mx:RemoteObject endpoint=" http://localhost:8300/flashservices/gateway" source="cfcRemoting.test" id="ro" /> <mx:DateFormatter formatString="hh:mm:ss" id="dateFormatter" /> <mx:Panel title="CFC Remoting" width="350"> <mx:List id="objList" dataProvider="{ro.getObjectArray.result}" width="100%" /> <mx:TextInput editable="false" text="{objList.selectedItem}" width="100%" /> <mx:ControlBar> <mx:Label text="Number of objects:"/> <mx:NumericStepper id="amount" minimum="1" maximum="500" value="/5" /> <mx:Button label="invoke" click="ro.getObjectArray(amount.value)" /> </mx:ControlBar> </mx:Panel> </mx:Application> |
1.首先分析看一下他的外观是如何的.外观用了一个
Panel:用于装下面的组件.一个
List:用于存放从CFC传回来的
值.一个
TextInput:用于显示List被选的条目.一个:
ControlBar:用于装Label, NumericStepper,与Button.
NumericStepper用于用户所需生成的对象数,
Button用于调用CFC.
程序代码: |
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=" http://www.macromedia.com/2003/mxml" > <mx:Panel title="CFC Remoting" width="350"> <mx:List id="objList" width="100%"/> <mx:TextInput editable="false" width="100%" /> <mx:ControlBar> <mx:Label text="Number of objects:"/> <mx:NumericStepper id="amount" minimum="1" maximum="500" value="5" /> <mx:Button label="invoke" /> </mx:ControlBar> </mx:Panel> </mx:Application> |
好了,外观出来了.
2.再看一下除外观标签外的标签.程序代码: |
<mx:Script> <![CDATA[ //这里声明了一个CFC组件的一个对象. var dependency:cfcRemoting.Test; ]]> </mx:Script> <mx:RemoteObject // endpoint属性指定网关,这里根大家的配置所填.我这里的是CF7.0的.如果用CFMX的端口改回8500 endpoint=http://localhost:8300/flashservices/gateway // source属性指定CFC的文件 source="cfcRemoting.test" //id属性指定实例名,用于在程序中的引用 id="ro" /> //formatString属性指定时间的格式 //id属性指定实例名,用于在程序中的引用 <mx:DateFormatter formatString="hh:mm:ss" id="dateFormatter" /> |
3.再看看外观的代码:程序代码: |
//标题设为"CFC Remoting" //宽设为: 350 <mx:Panel title="CFC Remoting" width="350"> // dataProvider属性值等于ro. getObjectArray.result得回来的值. <mx:List id="objList" dataProvider="{ro.getObjectArray.result}" width="100%" /> // text属性值是等于"objList"中被选择的条目 <mx:TextInput editable="false" text="{objList.selectedItem}" width="100%" /> <mx:ControlBar> <mx:Label text="Number of objects:"/> <mx:NumericStepper id="amount" minimum="1" maximum="500" value="/5" /> // click事件调用ro.getObjectArray(),将NumericStepper的值传到CFC里 <mx:Button label="invoke" click="ro.getObjectArray(amount.value)" /> </mx:ControlBar> </mx:Panel> |
4.test.cfc的内容程序代码: |
<cfcomponent> <cfset this.remoteClass="cfcRemoting.Test"> <cffunction name="getObject" access="remote" returntype="struct"> <cfargument name="num" type="numeric" required="yes"> <cfset var obj=StructNew()> <cfset obj["_remoteClass"] = this.remoteClass> <cfset obj["date"] = now()> <cfset obj["name"] = "Object #num#"> <cfreturn obj> </cffunction> <cffunction name="getObjectArray" access="remote" returntype="array"> <cfargument name="amount" type="numeric" required="no" default="1"> <cfset arr = ArrayNew(1)> <cfloop from="1" to=#amount# index="j"> <cfset arr[j]=#getObject(j)#> </cfloop> <cfreturn arr> </cffunction> </cfcomponent> |
这个组件有两个方法.
getObject()与
getObjectArray().这里的
getObject()方法是由
getObjectArray()方法去调用的.
getObjectArray()方法是
main.mxml中的
ro对象所调用的,
看一下他们做了些什么getObjectArray()方法就根据
main.mxml中的
NumericStepper的
值来动态生成数组个数.
每个数组都调用
getObject() 方法来填充数据为一个结构.
getObject() 方法就将每个数组都赋上一个结构。
结构体里有:
["_remoteClass"],["date"],["name"]三条。
5.Test.as的代码:程序代码: |
class cfcRemoting.Test { //定义一个name public var name:String; //定义一个时间 public var date:Date; //构造函数 public function Test() { } public function get label():String { //返回这个值到main.mxml的List里 return name + " (label test)"; } public function toString():String { //返回这个值到main.mxml的TextInput里 return "Hi, this is " + name + ", created " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ":" + date.getMilliseconds(); } } |
好了.完成了.大家试用一下吧.
posted on 2007-03-02 14:10
☜♥☞MengChuChen 阅读(838)
评论(0) 编辑 收藏 所属分类:
flex2.0