Flash Builder -> Tree -> ノードの開閉

Posted by muchag | ActionScript 3.0,Flash Builder 4 |
初回投稿:2010-07-31 (土) 21:59:23 | 最終更新:2010-07-31 (土) 22:17:38

Tree コンポーネントの各ノードの開閉を制御したい。

expandItem() メソッドを用いることで実現できる。

開く場合は、第2引数を true に、閉じる場合は、第2引数を false に。

 
[as3onfx4]public function expandItem(
item:Object,
open:Boolean,
animate:Boolean = false,
dispatchEvent:Boolean = false,
cause:Event = null
):void[/as3onfx4]

Adobe® Flex® 4.1 リファレンスガイド:Tree expandItem() メソッド
 

item

今のところ、XMLListCollection の方法しかわからない。

しかも、場所を自由に選ぶ方法がわからない。

詳細は、以下の 特定のノードの開閉 を参照。
 

特定のノードの開閉

今のところ、起動時に固定フォルダを開く方法しか試していない。
 

XML オブジェクトを辿る手法
[as3onfx4]var myXML:XML = new XML(event.result);
myTree.dataProvider = new XMLListCollection( new XMLList(myXML) );

myTree.validateNow();
treeFavorit.expandItem(myXML.children()[0], true, true);[/as3onfx4]

これはルートを表示しない方式の Tree で、1番目のフォルダをデフォルトで開いた状態にしている。

4行目に関しては

dataProvider を設定し、その直後に expandItem() を呼び出した場合は、不適切な動作が起こる可能性があります。
コンポーネントが検証されるまで待つか、validateNow() を呼び出します。

リファレンスのこの指示に従ったまでである。
 

XML オブジェクトをインデックスで拾う手法

Tree コンポーネントには、indexToItemRenderer() メソッドというものがあり
インデックスから当該アイテムレンダラを取得できる。

ただこのインデックスは曲者で、現在の状態で上から何番目 というものらしく
ノードの開閉状態によって コロコロ変化する ようだ。

さりながら、メインフォルダであればルートを表示していれば 1 。
ルートを表示してなければ 0 になる。

これを利用して以下のようにすることで、メインフォルダに関してだけは成功した。
[as3onfx4]var myXML:XML = new XML(event.result);
myTree.dataProvider = new XMLListCollection( new XMLList(myXML) );

myTree.validateNow();
var renderer:IListItemRenderer = myTree.indexToItemRenderer(0);
if (renderer)
{
var myXML:XML = renderer.data as XML;
myTree.expandItem(myXML, true);
}[/as3onfx4]

Posted by muchag | ActionScript 3.0,Flash Builder 4 |
初回投稿:2010-07-31 (土) 21:59:23 | 最終更新:2010-07-31 (土) 22:17:38

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment