AS3でMind MapぽいFlashを作る (1)ノード間隔の安定化

ということで、下のFlashを作ってみました。


上のFlashをクリックかダブルクリックして選択し、Rキーを押すと全ノードがランダムに散ります(日本語入力はオフにしてください)。その後、散ったノードが徐々に適当な距離を保つように移動していく様子が確認できると思います。何回か試してみて下さい。
今のところ、マウスイベントは付けていません。また、各ノードは常に移動するように設定したので、適当な距離に広がってもピクピク動きます。
今回は安定化を行う際に、中心の親ノードからの角度は考慮に入れませんでした。各ノード間の距離だけを用いて安定距離を算出することで、親―子―孫―曾孫―・・・ノードの角度を計算する手間を省く為だったんです(が、実際のところ両手法の比較はしていないので、今度実装して計算量を評価してみます)。
なのでノードの初期設定距離によっては全ノードが放射状に広がらないことや、ノードが変に挟まっている場合に硬直してしまうことがあるので、このロジックは改良する必要があります。
普通のMind Mapエディタにはこの機能を付ける必要は無いんですが、機能を考え始めたらつい入れ込んでしまいました。
にしても、シリーズものは「検索エンジンを実装」以来です。まぁ気ままに続けていきます。
とりあえず次はマウスイベントを付けてみよう。

コメント

  1. M より:

    ソースコードがほしいな

  2. yukun より:

    何分即席のソースコードなので雑なところ(カプセル化が破壊されているとか(ぇー))があり、丁度手直ししようとしていたところです。リファクタリングがある程度進みましたら公開しますが、今は難しいです。申し訳ありません(>_<)