ActionScript:Treeの使い方
TreeのdataProvider属性にArrayなりArrayCollectionなりを指定すれば,
Treeに要素を羅列することはできる.
var tree:Tree = new Tree; tree.dataProvider = ["aaa", "bbb", "ccc", "ddd"];
ただTreeで階層的に表示するには,ちょっとしたこつがいるのだ.
最初は次のように多次元配列を与えたのだがうまく行かなかった.
var tree:Tree = new Tree; tree.dataProvider = ["aaa", "bbb", "ccc", ["ddd", "eee"]];
こつはchildrenという属性を要素に持たせること.
具体的には次のようにするのだ.
var arr:Array = [ {name:"aaa"}, {name:"bbb"}, {name:"ccc"}, {name: "folder a", children: [ {name:"ddd"}, {name:"eee"} ]} ];
これをTreeのdataProvider属性に指定し,
labelField属性にラベルとして表示させたい属性(ここではname)を指定するとツリー表示される.
検証用のプログラムを貼付けておきますね.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; private function initApp():void{ var arr:Array = [ {name:"aaa"}, {name:"bbb"}, {name:"ccc"}, {name: "folder a", children: [ {name:"ddd"}, {name:"eee"} ]} ]; tree.dataProvider = arr; } ]]> </mx:Script> <mx:Panel width="250" height="200" layout="absolute" horizontalCenter="0" verticalCenter="0" title="TreeTest"> <mx:Tree width="100%" height="100%" id="tree" labelField="name" showRoot="true" /> </mx:Panel> </mx:Application>