对于一个拥有丰富组件的
GUI设计工具来说,界面的布局技术成为界面美化的一个重要方面。
Flex从控件的功能上大致提供了两种方法:容器(控制布局),组件(提供
GUI实质功能处理)。使用容器分层次管理GUI是当前的趋势,Flex也使用了此种方式,主观上我们认为它把我们界面上的组件通过容器进行了分组或分类布局管理。
接下来,我将通过简单的示例逐个介绍各种界面布局的设计。
Canvas layout 容器
Canvas的界面布局,它定义了一个矩形框架的区域,用来放置用户的容器和控件。不像其他的组件,你不能放任Flex的控件。你必须指定absolute或者constraint-based来指定组件的位置。Absolute模式必须指定x,y坐标。 Constrain-based必须指定side, baseline,或者center anchors. 接下来具体介绍两种布局方式:
Absolute模式:你可以指定x,y坐标来指定每个组件的在容器的位置。坐标的是相对canvas 容器的左上角来设计的。即容器的左上角坐标为(0,0). X.y可以为正负值,如果是负值的话,组件就会放在超出容器可是范围的位置。当然可以利用Actionscript来完成移动的操作,这就涉及到的event事件。
|
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" width="219" height="230"> <mx:Canvas id="mycanvas" height="182" width="200" borderStyle="solid" backgroundColor="white"> <mx:Button x="10" y="10" label="button1"/> <mx:Button x="50" y="67" label="Button2"/> <mx:Button x="92" y="129" label="Button3"/> </mx:Canvas> </mx:WindowedApplication>
|
效果如下图:
constraint-based模式:这个分别介绍canvas 的Vbox以及Hbox的两种组合。Canvas通常有x,y指定组件的位置,x,y默认的应该是0.所以你如果不指定x,那么将把组件放在x=0,的位置。这样有可能出现重叠现象。当然也可以指定其他模式的布局,比如Vbox,或者Hbox。这样就可以不指定x,y了。
|
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Canvas width="340" height="247" backgroundColor="#FFFFFF"> <mx:VBox id="vb" left="10" right="248" y="26" height="153" backgroundColor="#A9C0E7"> <mx:Button label="button1" width="74"/> <mx:Button label="Button2"/> <mx:Button label="Button3"/> </mx:VBox> <mx:HBox id="hBox2" left="100" right="27" y="26" height="153" backgroundColor="#A9C0E7"> <mx:Button label="button4" /> <mx:Button label="Button5"/> <mx:Button label="Button6"/> </mx:HBox> <mx:Button label="Button8" y="200"/> <mx:Button label="Button7" y="190"/> </mx:Canvas>
</mx:WindowedApplication>
|
效果如下图:
Vbox或者Hbox 布局
前面介绍的把Vbox或者Hbox嵌入Canvas。其实他们本身都是一个容器,可以独立使用的。效果跟上面图中显示的是一样的。所以关于VBox,HBox就不再加以介绍了。举个例子好了:
|
<?xml version="1.0"?> <!-- containers\layouts\VBoxSimple.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:VBox borderStyle="solid" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> <mx:Button id="fname" label="Button 1"/> <mx:Button id="lname" label="Button 2"/> <mx:Button id="addr1" label="Button 3"/> <mx:ComboBox id="state"> <mx:ArrayCollection> <mx:String>ComboBox 1</mx:String> </mx:ArrayCollection> </mx:ComboBox> </mx:VBox> </mx:Application>
|
效果图如下:
ControlBar layout 容器
你可以把controlbar和panel 或者titlewindow容器组合起来使用。这样做的好处容器里的组件可以被panel或者titlewindow里的组件共用。(原文:You use the ControlBar container with a Panel or TitleWindow container to hold components that can be shared by the other children in the Panel or TitleWindow container.)举个例子:
|
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private function addToCart():void { // Handle event. } ]]> </mx:Script> <mx:Panel title="My Application" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> <mx:HBox width="250" height="200"> <!-- Area for your catalog. --> </mx:HBox> <mx:ControlBar width="250"> <mx:Label text="Quantity"/> <mx:NumericStepper/> <!-- Use Spacer to push Button control to the right. --> <mx:Spacer width="100%"/> <mx:Button label="Add to Cart" click="addToCart();"/> </mx:ControlBar> </mx:Panel> </mx:WindowedApplication>
|
效果图:
ApplicationControlBar 容器
这个主要用来做界面顶部的导航条。这个容器menubar, combox button等组件。举个例子:
|
<?xml version="1.0"?> <!-- containers\layouts\AppCBarSimple.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.Alert; ]]> </mx:Script> <mx:XMLList id="menuXML"> <menuitem label="File"> <menuitem label="New" data="New"/> <menuitem label="Open" data="Open"/> <menuitem label="Save" data="Save"/> <menuitem label="Exit" data="Exit"/> </menuitem> <menuitem label="Edit"> <menuitem label="Cut" data="Cut"/> <menuitem label="Copy" data="Copy"/> <menuitem label="Paste" data="Paste"/> </menuitem> <menuitem label="View"/> </mx:XMLList> <mx:Array id="cmbDP"> <mx:String>Item 1</mx:String> <mx:String>Item 2</mx:String> <mx:String>Item 3</mx:String> </mx:Array> <mx:ApplicationControlBar id="dockedBar" dock="true"> <mx:MenuBar height="100%" dataProvider="{menuXML}" labelField="@label" showRoot="true"/> <mx:HBox paddingBottom="5" paddingTop="5"> <mx:ComboBox dataProvider="{cmbDP}"/> <mx:Spacer width="100%"/> <mx:TextInput id="myTI" text=""/> <mx:Button id="srch1" label="Search" click="Alert.show('Searching')"/> </mx:HBox> </mx:ApplicationControlBar> <mx:TextArea width="300" height="200"/> </mx:Application>
|
效果图:
DividedBox, HDividedBox 和VDividedBox 布局
其实呢,DividedBox,与Box 是非常类似的,唯一不同的在于它子Box板块自建加入了一条分隔条,用户可以更具自己需要来调整各个子Box板块的大小。子Box板块的分布可以分成两种,水平以及垂直的。比如:
实现的代码如下:
|
<?xml version="1.0"?> <!-- containers\layouts\HDivBoxSimple.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="white"> <mx:Script> <![CDATA[ private function myGrid_initialize():void { myGrid.dataProvider = [ {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99, Comment:'One of their best. 4 Stars.'}, {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99, Comment:'My favorite.'} ]; } ]]> </mx:Script> <mx:HDividedBox width="100%" height="100%"> <mx:Tree id="tree1" width="30%" height="100%" labelField="@label" showRoot="true"> <mx:XMLList> <menuitem label="Products"> <menuitem label="Posters" isBranch="true"/> <menuitem label="CDs"> <menuitem label="Pavement"/> <menuitem label="Pavarotti"/> <menuitem label="Phish"/> </menuitem> <menuitem label="T-shirts" isBranch="true"/> <menuitem label="Tickets" isBranch="true"/> </menuitem> </mx:XMLList> </mx:Tree> <mx:VDividedBox width="70%" height="100%"> <mx:DataGrid id="myGrid" width="100%" height="100%" initialize="myGrid_initialize();" change="currentMessage.text= event.currentTarget.selectedItem.Comment;"/> <mx:TextArea id="currentMessage" width="100%" height="60" text="One of their best. 4 Stars."/> </mx:VDividedBox> </mx:HDividedBox> </mx:Application>
|
相关推荐:
网站网页制作专业公司,怎样制作自己的网页?
深圳网站制作公司哪家好,深圳本地有影响力的招聘网站有哪些?或者还有哪些招聘渠道?
培训网站制作网站,全国中小学教师网络研修平台网站怎么注册?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
,网站推广常用方法?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
,青岛中考网上报志愿流程?
名字制作网站免费,所有小说网站的名字?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
免费视频制作网站,更新又快又好的免费电影网站?
手机网站制作价格怎么算,手机网页制作和pc端什么区别网页设计师要注意什么要点?
sqlserver 中charindex/patindex/like 的比较
mysql 编码设置命令
太平洋网站制作公司,网络用语太平洋是什么意思?
JavaScript 另类遍历数组实现代码
头像制作网站在线制作软件,dw网页背景图像怎么设置?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
MSSQL汉字转拼音函数实现语句
如何制作一个表白网站视频,关于勇敢表白的小标题?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
,我想办一个网站,自己会做网页。请问大概要多少钱,除了买域名、做网站、买空间还有什步骤吗?
jQuery slider Content(左右控制移动)
jQuery与javascript对照学习 获取父子前后元素 实现代码
alt键 chr码值对应列表查看方法
网站代码制作软件有哪些,如何生成自己网站的代码?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
自助网站制作软件,个人如何自助建网站?
网站logo制作免费,DW网页制作时,如何在网页标题前加上logo?
sql convert函数使用小结
PHP iconv 函数转gb2312的bug解决方法
PHP网站制作软件,有什么学习php比较好的免费网站?
MSSQL 首字母替换成大写字母
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
公司网站制作需要多少钱义乌,公司办个官网需要多少钱?
流程图制作网站免费,谁能推荐几个好的CG原画资源网站么?
学习ExtJS Column布局
Oracle 中文字段进行排序的sql语句
视频网站app制作软件,有什么好的视频聊天网站或者软件?
郑州营销型网站制作公司,郑州教育博客怎么复制个人网址?
小学生作文妙语 开怀大笑作品
简历在线制作网站免费,免费下载个人简历的网站是哪些?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
北京企业网站制作公司,北京保利官方网站?
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
签名框(Textarea)限制文字数量并适时提示
javascript createElement()创建input不能设置name属性的解决方法
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?