Flex学习笔记3——组件和容器

来源:互联网 发布:java rpc实例 编辑:程序博客网 时间:2024/04/27 23:40

组件

UIComponent

         组件的基类,所有可视化组件从这继承,而且它是Sprit的子类,具有绘图功能。

常见组件

RadioButtonGroup:控制一组的radioButton

ApplicationControlBar:实现工具栏

ButtonBar一组button的集合。

LinkBar将一组LinkButton组合起来

List 定义自己的itemRenderer对象,对获得的数据进行解析,使得List组件的内容不再局限于文字,还可以是图片及其他内容

DataGrid组件:将数据以行,列的格式显示出来。特征如下:

l   调整列的宽度;

l   调整列的顺序;

l   点击列标题排序;

l   定义每个单元格的itemRenderer,类似于formatOperate函数,方法是在canvas中定义要在单元格中显示的控件,

l   可以定义headerRenderitemEditor,要使用itemEditor必须把DataGrideditable设为true

Tree组件:使用xmlTree生成数据很合适,<mx:XMLList><mx:XML>定义XML数据,实现自定义的itemRenderer继承于TreeItemRenderer比较方便

TileList:综合了TileList的优点,在一行上可显示多余一个item,好处是可以用itemRenderer定制显示方式

NumericStepper:实现数字的选择,防止格式错误

文本组件

Text相当于Label,要支持html标签,使用htmlText实现

TextInput相当于html中的Text

TextArea

RichTextEditor类似于csdn中博客编辑器

       当使用的字体在客户机上没有时,有两种替代方式,一般使用设备字体(_sans,serif, _typewriter)在CSS中定义;但如果在动画效果Fade(淡入淡出效果),Rotate,disolve(溶解)就必须使用嵌入字体,可以指定嵌入字体的范围,从而减少字体文件大小,方法是frameworks/flex-config.xml中的fonts.

导航类组件

       ToggleButtonBar效果不是很好看

       TabBar不包含其他子级容器,与ViewStack一起使用,通过TabBaritemClick事件的关联,可以实现选项卡效果,不知道和TabNavigator有什么不一样

       菜单:使用MenuBar实现全局导航,支持XML和数组作为数据源。应该可以使用二维数组和xml实现多级菜单功能。

       PopUPBotton右侧有下拉箭头的button,当点击下拉箭头时,可以将任何组件作为窗口弹出,如树,列表等,比较重要的事件是openclose, open在窗口弹出时触发,close在关闭时触发。

       PopUpMenuButton继承自PopUpButton只能将menu控件当做弹出窗口,实现右键菜单,或pannel中的下拉菜单,尽量不要使用一级菜单。并可以指定其为图片(小三角)

实例运用

画板的实现

       画板使用Panel嵌套Canvas构成,使用Canvasgraphics属性,对 Mousedown,up,move事件监听并处理完成完成画线功能,

图片加载器

       使用SWFLoader完成图片的加载

       指定ProgressBarsource指明衣服的对象,该对象必须自行检测加载进度并派发process事件和completed事件。

FLV视频播放器

       使用VideoDisplay完成flv的播放,也可以和progressBar配合

容器

Container

         容器的基类,管理UIComponent对象布局的组件容器,其中getChildren()用于获取子组件的数组、getChildAt()numChildren获取子组件的数量。而Container除了子组件外,还有其内部对象如边框、背景等,可通过 rawChildren获得。

常见容器

1.         Applicationlayout控制整个界面的布局

2.         Canvas只能由xy坐标来定位,在ActionScript中设置%的长和宽,需要使用percentWidthpercentHeight;

3.         VboxHbox采取水平和垂直方向的排序

4.         DivideBox HdivideBoxVdivideBox在子元素之间加入了可以拖动的分割块。liveDragging是否拖动

5.         Panellayout属性为absolute,则相当于Canvas,值为horizontal则为Hbox,值为vertical则为Vbox; title属性表示标题,使用容器ControllBar放置按钮

6.         TitleWindow多了一个关闭按钮

7.         对话框:使用PopUPManager.addPopUp()removePopUp弹出

布局容器

1.       Tile指定每行显示个数,当要显示超出个数,则自动转到下一行,适合显示个数未知的动态数据。

2.       Grid类似于表格,可以对每个子元素进行布局

导航容器

1.      Accordion:可折叠的导航器,包含一个子面板列表,但每次只显示一个面板,类似于危险源的菜单

2.      ViewStack:由若干重叠在一起的子容器组成,每次只有一个容器是可见和活动的。

3.      TabNavigator:选项卡,其中可包含CavasPanel等内容作为一个选项卡

表单容器

Mx:Form  mx:FormHeading  mx:FormItem完成内容

验证<mx:StringValidator>等有文本,信用卡,货币验证,电子邮件,日期,电话号码和正则表达式,邮政编码验证

样式

设置组件的样式CSS

包含文件  <mx:Style source=””> 常用

添加样式订一块  <mx:Style> 小范围应用

使用getStylesetStyle      运行时改变,大型程序中,比较影响效率,尽量避免使用

使用StyleMananger

设置多个相同的样式:使用全局的类型样式,或者给对象定义一个样式

使用主题

       一个配置完整的样式包,样式包定义的色彩和外观形成一种表现风格,类似于skin,一般以SWC文件存放,已提供的样式:frameworks/themes文件夹下

       使用:在flex-config.xmltheme标签中设置

修改组件的外观

通过CSS修改外观,有两种方式:

嵌入图像资源:

嵌入图像时,为了保证缩放不失真,使用九格缩放的功能,在Embed中指定scaleGridTop  scaleGridBotttom  scaleGridLeft  scaleGridRigth属性指定中间区域的大小。

通过程序绘制:

       覆盖ProgrammaticSkinupdateDisplayList方法

       将新建的类嵌入到样式中

自定义windows组件

       SWF中可包含多个外观文件,可以代替图片载入。在做fla时已经加入了九格缩放功能,嵌入SWF文件时不需要。利用SWF可以在背景中加入动画效果,丰富程序的界面