在上次我主要说了以下flex builder 2 开发环境的一些信息,对于flex的开发并没有多的介绍,今天补上,呵呵.由于不是教程,所以我这里主要讲一些flex中的重点,并没有提供完成的示例,如果想看示例可以去看Adobe.Press.Adobe.Flex.2.Training.from.the.Source.Oct.2006_[Flex2.org].chm一书,可以在http://www.flex2.org上下载.
在UI开发的时候我们一般都是通过后台获得业务数据然后通过一些表现手段来展示给我们的用户,但是很多应用在于展示部分做的并不理想,甚至很麻烦.然而flex却很容易做到. flex和非常方便的获得服务器端的信息,我们可以通过<mx:HTTPService>标签来和服务端获得通讯,服务断可以是java或者其他实现.这个标签中比较重要的有URL;result;resultFormat属性,URL属性我就不多说什么了,result属性用于指定具体function来处理服务器返回的response,resultFormat指明了服务器返回的数据用何种类型.例如:
url ="http://www.flexgrocer.com/categorizedProducts.xml" result ="prodHandler(event)" resultFormat ="e4x" />
这里需要说以下的resultFormat="e4x",e4x是actionScript3.0所提供的xml处理API,类似于java中的jDom之类的API,但是他更灵活.
有了HTTPService标签我们还要告诉应用什么时候从服务器那里获得信息,一般情况下我们可以通过buttion的cleck事件,或者combox的change事件等,但是如果这些数据是用来初始化一下UI表现的话,那么我们希望他能在UI绘图结束后马上就执行,这个时候我们可以通过在<mx:Application>标签中加入
creationComplete="prodByCatRPC.send()"
,来使得UI所以控件都创建完成后立即向服务器取得信息.(prodByCatRPC指的是<mx:HTTPService>标签的ID属性)
有了数据来源,那么接下来要做的就是如何把服务器传来的数据重新组织和展现给用户,flex 2 推荐使用ArrayCollection这个对象,flex中很多数据展现控件都有一个dataProvider数据用于绑定数据源,而数据源中使用最多的估计就是这个ArrayCollection了,从名字上我们就能猜到他其实就是一个对象集合,和java中的Collection是一样.
如果想在UI上使用数据源来提供数据,就必须将数据源定义为Bindable,具体语法如下:
private var groceryInventory:ArrayCollection;
在flex中有一点感觉不是很舒服,如果在一个应用中使用多个数据源,那么在代码中需要多次出现Bindable这个关键字.如果能使用类似C++中的的定义方式就好了例如下显示就好了,希望flex开源以后能够改进一下.
pjrivate var para1:ArrayCollection=new ArrayCollectioin();
pjrivate var para2:ArrayCollection=new ArrayCollectioin();
pjrivate var para3:ArrayCollection=new ArrayCollectioin();
}
将变量(数据源)定义为Bindable以后我们就可以在控件标签中使用这些变量了,具体的控件使用可以参考flex相关参考文档