Flash Builder -> Tree with Spring Loaded Folders
Tree コンポーネントを触っていて
Windows エクスプローラ ライクに D&D をしたくなる。
そこでグーグル先生の力を借りて手法を探していたら
素敵なカスタムコンポーネントを見つけたのでいただいてきた。 🙂
Flexible Experiments:Flex 2.0.1 Tree with Spring Loaded Folders (Update 2)
Flex 2.0.1 用、February 26th, 2007 の記事ということで、FB4 でちゃんと動作するか不安だが
先ずは試してみることにした。
上記サイトから DL 。
フォルダ構成。
com
┣DelayedTimer.as
┣ListItemGroupedDragProxy.as
┗SpringLoadedTree.as
Sample.mxml
sampleData.xml
この内の as ファイル3点を
を新たに作成してその中へ入れる。
上記 as ファイル3点のパッケージ名をフォルダ構成に合わせて変更。
メインファイルの Application タグに以下を記述。
[mxml]xmlns:Extended=”com.sprintLoadedFolders.*”[/mxml]
警告が出るので対処。
[as3onfx4 num=46]import mx.styles.StyleManager;
import mx.styles.IStyleManager2; // 追加[/as3onfx4] [as3onfx4 num=813]var manager:IStyleManager2 = StyleManager.getStyleManager(null);
var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration(“DragManager”);[/as3onfx4]
<参考サイト>
ActionScript入門Wiki@rsakane:スタイルをCSSではなく、AS3側から記述する(StyleManager)
また、いくつかのサイトに載っていた事例で、以下のようにしても対応できるらしい。
[as3onfx4]var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration(“DragManager”);[/as3onfx4]
前述の如く改変した上で動かしてみたが、上記のようなエラーが出た。
問題箇所は正に警告のあった行だった。
[as3onfx4]// オリジナル
var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration(“DragManager”);
// 改変1
var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration(“DragManager”);
// 改変2
var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration(“DragManager”);[/as3onfx4]
以上のどれで試しても同じエラーが出る。
あれこれ弄ってみた結果、Tree コンポーネント外へマウスを移動する分には問題ないのだが
Tree コンポーネント上でマウスを移動すると、上記コードの変数 styleSheet が null になってしまうのだ。
どうやら、私の力量ではコンバートは難しい。
2日程、悩み、弄り、眠り・・・を繰り返したが、解決法が浮かばない。
残念。。。 😯