Представление вложенных папок как объектов DisplayObject - PullRequest
0 голосов
/ 21 апреля 2011

Я работаю над создателем мира, который загрузит инструментарий, представленный в виде XML-документа. Документ будет выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<toolkit>
    <folder name="environment">
        <folder name="terrain">
            <tool name="grass">
                <classname>game.terrain.Grass</classname>
                <layer>terrain</layer>
            </tool>
            <tool name="dirt">
                <classname>game.terrain.Dirt</classname>
                <layer>terrain</layer>
            </tool>
            <tool name="water">
                <classname>game.terrain.Water</classname>
                <layer>water</layer>
            </tool>
        </folder>
        <folder name="mobile">
            <folder name="enemies">
                <tool name="youngzombie">
                    <classname>game.mobiles.YoungZombie</classname>
                    <layer>mobiles</layer>
                </tool>
                <tool name="zombie">
                    <classname>game.mobiles.Zombie</classname>
                    <layer>mobiles</layer>
                </tool>
            </folder>
        </folder>
        <tool name="player">
            <classname>game.mobiles.Player</classname>
            <layer>mobiles</layer>
        </tool>
</toolkit>

Теперь я хочу представить эту структуру во флэш-памяти. Вертикальное расположение достаточно просто, просто размещая элементы сверху вниз. Это ошеломляет, когда мне нужно сделать следующее:

  1. Возможность щелкнуть любую папку и скрыть / показать все ее дочерние элементы.
  2. Позиционирование элементов по горизонтали на основе иерархической позиции (дочерние элементы папок, дочерние папки и т. Д.)
  3. Расположите папки / инструменты вертикально, когда папки выше и в одном и том же «каталоге» скрыты.

Это звучит намного проще, чем есть, или я пропускаю важный и очевидный шаг.

Просто чтобы избежать путаницы - когда я ссылаюсь на «папки» и «инструменты», это MovieClip, который представляет собой простой блок с текстом над ним, например:

------
folder
------
    ------
    folder
    ------
        ----
        tool
        ----
        ----
        tool
        ----
    ------
    folder
    ------
        ----
        tool
        ----
----
tool
----

1 Ответ

0 голосов
/ 21 апреля 2011

Я делаю то же самое без использования дерева, потому что макет мне не подходит (мобильное приложение).Вы можете создать для каждого, который читает каждый элемент в xml, и добавить к каждому тегу родительский элемент и элемент его дочерние элементы.Я делаю представление с помощью tileList и даю arraylist как тег dataprovider-tag, который заполнен элементами xmlfile.Список будет изменен, нажав на элемент или предыдущую кнопку.Вы можете сделать onDataChange в вашем элементе-элементе tileList, который воссоздает tileList по новым данным в вашем массиве. Если вы щелкнете по элементу, вы сможете показать детей.Если вы щелкнете по предыдущей папке, вы можете показать родительский объект (у которого есть свои дочерние объекты).

Не знаю, понимаете ли вы способ работы.Если у вас есть вопросы по этому поводу, просто спросите;).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...