Flash Builder -> Tree with Spring Loaded Folders

Posted by muchag | Flash Builder 4 |
初回投稿:2010-07-26 (月) 17:43:07 | 最終更新:2010-07-29 (木) 1:17:09

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 & インストール

上記サイトから DL 。

フォルダ構成。

com
┣DelayedTimer.as
┣ListItemGroupedDragProxy.as
┗SpringLoadedTree.as
Sample.mxml
sampleData.xml

この内の as ファイル3点を

プロジェクトフォルダ/src/com/springLoadedFolders

を新たに作成してその中へ入れる。

上記 as ファイル3点のパッケージ名をフォルダ構成に合わせて変更。

メインファイルの Application タグに以下を記述。
[mxml]xmlns:Extended=”com.sprintLoadedFolders.*”[/mxml]

警告が出るので対処。

3608: “getStyleDeclaration” は 4.0 以降推奨されていません。”IStyleManager2.getStyleDeclaration on a style manager instance” を使用してください。 Flex の問題
Actionscript 3.0 on Flex 4

  1. import mx.styles.StyleManager;
Actionscript 3.0 on Flex 4

  1. var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration("DragManager");

Actionscript 3.0 on Flex 4

  1. import mx.styles.StyleManager;
  2. import mx.styles.IStyleManager2; // 追加
Actionscript 3.0 on Flex 4

  1. var manager:IStyleManager2 = StyleManager.getStyleManager(null);
  2. var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration("DragManager");

<参考サイト>
ActionScript入門Wiki@rsakane:スタイルをCSSではなく、AS3側から記述する(StyleManager)
 
また、いくつかのサイトに載っていた事例で、以下のようにしても対応できるらしい。

Actionscript 3.0 on Flex 4

  1. var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("DragManager");

 

エラー
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。

前述の如く改変した上で動かしてみたが、上記のようなエラーが出た。

問題箇所は正に警告のあった行だった。

Actionscript 3.0 on Flex 4

  1. // オリジナル
  2. var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration("DragManager");
  3.  
  4. // 改変1
  5. var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration("DragManager");
  6.  
  7. // 改変2
  8. var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("DragManager");

以上のどれで試しても同じエラーが出る。

あれこれ弄ってみた結果、Tree コンポーネント外へマウスを移動する分には問題ないのだが
Tree コンポーネント上でマウスを移動すると、上記コードの変数 styleSheet が null になってしまうのだ。
 

結論

どうやら、私の力量ではコンバートは難しい。

2日程、悩み、弄り、眠り・・・を繰り返したが、解決法が浮かばない。
残念。。。 😯

Posted by muchag | Flash Builder 4 |
初回投稿:2010-07-26 (月) 17:43:07 | 最終更新:2010-07-29 (木) 1:17:09

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

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment