创建用户界面
我想以层的形式创建Flex应用程序,首先是用户界面,然后在框架中添加代码以实现互动性。首先,若尚未安装Flex SDK则先安装。Flex SDK是免费软件,Flex Builder 2 IDE也有免费试用版。可从http://www.flex.org/download下载Flex SDK。Flex SDK是免费的,Flex 3 SDK也将成为开源软件。Flex Builder是一种基于Eclipse的开发环境,通过拖放控件即可创建界面,但本例不必使用该工具。我非常喜欢使用标签,因此通常采用代码视图并直接修改MXML。
我想在界面顶部放置几个控件并在底部放置一个数据网格,以显示表中的数据。顶部的控件就是两个下拉列表,可在其中选择数据库和表。
该窗体的MXML如清单2所示。
清单2:flexmysql1.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:VBox horizontalAlign="left"> <mx:HBox> <mx:Label text="Database:" /> <mx:ComboBox id="selectedDatabase" width="381" height="21"> </mx:ComboBox> </mx:HBox> <mx:HBox> <mx:Label text="Table:" /> <mx:ComboBox id="selectedTable" width="381" height="21"> </mx:ComboBox> </mx:HBox> <mx:DataGrid id="dg1" width="452"> </mx:DataGrid> </mx:VBox> </mx:Application>
|
在Flex Builder 2中编译及运行这段代码时,结果如图1所示。
498)this.style.width=498;">
|
图1:界面布局
|
相当整洁,对吧?渐变背景很漂亮,控件也很美观。我只做了极少量的工作。当然,图形设计师也可添加一些修饰,以使其更加美观,例如过渡效果和图像。而我还是喜欢整洁的界面,并要确保它在每台客户机上都具有一致的外观和表现,而Ajax应用程序要做到这一点并不容易。
获取数据库清单
补充Flex应用程序代码的第一步就是,当应用程序加载后在窗体顶部显示数据库的组合框。相关代码如清单3所示。
清单3:flexmysql2.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="onInitialize()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; private static const SERVICE_BASE:String = "http://localhost/sql/req.php"; public function onInitialize():void { myservice.url = SERVICE_BASE; myservice.send( null ); } public function onResult(event:Event):void { selectedDatabase.dataProvider = myservice.lastResult..database.*; } ]]> </mx:Script> <mx:HTTPService id="myservice" result="onResult(event)" resultFormat="e4x"> </mx:HTTPService> <mx:VBox horizontalAlign="left"> <mx:HBox> <mx:Label text="Database:" /> <mx:ComboBox id="selectedDatabase" width="381" height="21"> </mx:ComboBox> </mx:HBox> <mx:HBox> <mx:Label text="Table:" /> <mx:ComboBox id="selectedTable" width="381" height="21"> </mx:ComboBox> </mx:HBox> <mx:DataGrid id="dg1" width="452"> </mx:DataGrid> </mx:VBox> </mx:Application>
|