第十五节Tree树形菜单运用
15.1认识
从上面那个图标可以看出这个类似于HTML网页经常出现的树形菜单,2,3级菜单都可以用,但是这个菜单大家最熟悉就莫过于QQ的好友分组,以前的版本Tree要实现QQ好友分组效果会有点费事,但是现在呢,嘿嘿易如反掌,所以
我们下一小节先讲下基本的运用。
万能英语作文
15.2Tree运用
汉献帝怎么死的
照旧我们先从组件库里找到Tree:详情请见下图
餐厅后厨
(组件库找组件图1)
傲慢与偏见95版
然后拉入到场景:详情请见图2:
很多人给我说有些组件为什么拉入到场景,跟组件图标样子不一样呢,呵呵这句话让我想到了我上次去饭店点菜,点出来的菜跟菜单里的菜完全是两个妈生的,这差别太大,咳跑题,呵呵我只
能说是一模一样,因为他也属于数据容器,因为没有数据所以就是空白咯。下来我们切换到源代码窗口看到了生成的代码:
<mx:Tree></mx:Tree>
虽然这个组件还是mx的马甲,但是他充满了s的概念,标准的混血儿。
既然说了他是数据容器,肯定先绑定数据才看的到效果,我们对一个事物好奇仅限于他的功能:是FLEX3转FLEX4.5朋友注意,在FLEX4.5版本很多数据容器都不在支持简单的数据集合,比
如Array都不在支持都会报错。支持的数据接口IList接口的话就可以运用。我们看下官方给我们提供数据的类型:
llections.ArrayCollection;
llections.XMLListCollection;
llections.ArrayList;
常用的就这几种,一个是Array扩展版,一个XML扩展版,因为现在数据都需要多维数据,Array 做负责数据有点牵强,ArrayList所以只有扩展来实现更多功能。上面几个类似就不一一介绍了,下面开始动真格。
基本功大赛
首先我们在目录下建立个asts资源文件夹在里面放入我们的图片:详情看图3
然后我们就开始写数据源:
[Bindable]
Private var urHeadArr:ArrayCollection=new
ArrayCollection([中国农民
{labels:"女自由职业者",head:"asts/obj1.png"},
{labels:"男自由职业者",head:"asts/obj2.png"},
{labels:"女工薪族",head:"asts/obj3.png"},
{labels:"男工薪族",head:"asts/obj4.png"},
{labels:"女商人",head:"asts/obj6.png"},
{labels:"男商人",head:"asts/obj5.png"}
]);
因为一般像数据组件的数据接口都需要绑定数据,这样数据变更了他也会动态的获取.
数据写好了现在开始串联到组件里去
<mx:Tree width="171"height="166"dataProvider="{urHeadArr}"></mx:Tree>
是不是绑定好了,我们运行下看下:
为什么显示全是object对象,虽然我们数据源是由N个对象组成的,但是这不是我要的结果。Tree:你NND,你只是把数据给我,你有没说要显示什么,我也只能告诉你它是对象。
Ken:我的错,我的错。
很多新手在这方面都被这样问题难倒过,解决办法很简单啃API啊。API有个属性“labelFiled":数据提供程序项目中作为标签显示的字段名称。默认情况下,列表将在每个项目上查找label属性并将其显示出来。但是,如果该数据对象不包含label属性,则可以将labelField属性设置为使用数据对象中的其它属性。例如,在查看从数据库中提取的一组人名时,可以使用“FullName”。
所以总体意思我们想让Tree显示什么值的话就得输入我们数据源的键值,比如我们想让他显示我们数据源的labels
<mx:Tree width="171"height="166"dataProvider="{urHeadArr}"
labelField="labels"/>
这回在运行下看下:
、
这回是不是得到我们想要的东西。其实就是这么简单的,细心的童鞋会发现为什么和tree
不太一样,Tree应该有一个箭头,点击下展开,在点击下隐藏,因为我们数据是一维数据,要想出现那种效果需要使用XMLListCollection对象,他是使用多级菜单最好的方法:
<fx:Declarations>
亦步亦趋的意思<s:XMLListCollection id="xml">
<fx:XMLList>
<ids labels='职业'>
<ids labels='女自由职业者'head='asts/obj1.png'/>
<ids labels="男自由职业者"head='asts/obj2.png'/>
<ids labels="女工薪族"head='asts/obj3.png'/>
<ids labels="男工薪族"head='asts/obj4.png'/>
<ids labels="女商人"head='asts/obj5.png'/>
<ids labels="男商人"head='asts/obj6.png'/>
</ids>
新兴行业有哪些
</fx:XMLList>
</s:XMLListCollection>
</fx:Declarations>
这种标签<fx:Declarations>就是不可视话组件就写到这标签里,可视化标签就不需要写在这里面紧记。