Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Фамильное дерево hierarchy tree (http://www.flasher.ru/forum/showthread.php?t=164609)

graphictest 17.08.2011 17:48

Фамильное дерево hierarchy tree
 
Не могу найти, как создать динамически фамильное дерево.
что то типа этого:http://www.adesblog.com/images/geni.jpg
буду благодарен за любую наводку!

saikspaik 17.08.2011 17:53

Цитата:

Не могу найти, как создать динамически фамильное дерево.
Странно, как такое можно искать. Тебе нужна команда createDynamicFamilyTree? Такой нет.
Может у тебя что-то конкретно не получается?

NikolyA 17.08.2011 18:07

так можно сделать такое дерево самому, или в чем проблема?

Astraport 18.08.2011 10:20

Во Flex не сложно. В TourDeFlex есть похожие вещи с исходниками.

graphictest 19.08.2011 12:16

Просто не выходит построение самого дерева с любым количеством нодов
типа такого рисунка (organization chart)
http://www.imbrandon.com/wp-content/...ion-chart4.gif

Добавлено через 1 минуту
я не программер - работаю только во Flash

toFL 19.08.2011 12:24

Цитата:

я не программер - работаю только во Flash
1) Немного придется углубиться в AS3
2) Заказать разработку в разделе Вакансии

P.S. навскидку, то, с чем придется столкнуться:
Function, Переменные, Повтор, XML, Sprite, TextField, Graphics, EventDispatcher

graphictest 19.08.2011 13:01

я попросил только подсказку, как построить дерево с разным количесивом нодов и не просил, чтобы мне дали готовую аппликацию. ас3 мне знаком

Genzo 19.08.2011 13:26

указывайте родителя объекта и все , если родителя нет значит объект первый. вообще трудно так на пальцах объяснить как это сделать , но ничего в этом сложного нет

silin 19.08.2011 14:15

типа подсказка как построить дерево
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        var data:XML =
                        <node label="root">
                                <node label="level1_1">
                                        <node label="level1_1_1"/>
                                        <node label="level1_1_2"/>
                                </node>
                                <node label="level1_2">
                                        <node label="level1_2_1">
                                                <node label="level1_2_1">
                                                        <node label="level1_2_1_1"/>
                                                </node>
                                        </node>
                                </node>
                        </node>;
 
                        addChild(new Node(data));
 
                }
 
        }
 
}
//////////////
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
 
class Node extends Sprite
{
        public const GAP:Number = 10;
        public var label:TextField = new TextField();
        private var data:XML;
 
        public function Node(data:XML)
        {
                this.data = data;
                //рисует себя
                label.text = data.@label;
                label.autoSize = TextFieldAutoSize.LEFT;
                label.border = true;
                label.background = true;
                label.backgroundColor = 0xEEEEEE;
                addChild(label);
                addEventListener(Event.ADDED_TO_STAGE, addedToStage);
 
                // добавляет детей
                for (var i:int = 0; i < data.*.length(); i++)
                {
                        addChild(new Node(data.*[i]));
                }
 
 
        }
 
        private function addedToStage(e:Event):void
        {
                removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
 
                y = parent.getBounds(parent).bottom + GAP;
                x = parent.x + GAP;
                if (parent is Node)
                {
                        var pRect:Rectangle = Node(parent).label.getRect(this);
                        if (parent is Node)
                        {
                                graphics.lineStyle(0);
                                graphics.lineTo(pRect.left, pRect.bottom);
                        }
                }
        }
 
}


graphictest 29.08.2011 00:48

спасибо!
я только не могу одного понять, как расположить все это дело по центру и по горизонтали(но это проще :))
буду разбираться....


Часовой пояс GMT +4, время: 00:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.