Как мне структурировать данные для сложного объекта в ActionScript 3? - PullRequest
0 голосов
/ 08 января 2010

Я надеюсь, что это не слишком расплывчато, но я застрял в проблеме, которая поставила меня в невыгодное положение.

Я разработчик Flash, но я пытаюсь освоить инструмент для внутренней отделки помещений для клиента. До сих пор я думал: создать базовый пользовательский интерфейс, убрать поток с экрана, а затем, наконец, использовать пару простых массивов для хранения пользовательских настроек и тому подобного.

Естественно, моя «пара простых массивов» совершенно не подходит для моделирования многих пользовательских решений, которые должна учитывать моя программа. Поэтому я пытаюсь создать огромный многомерный массив с несколькими слоями вложенности и до того, как начнется паника.

Вот пример моего мышления для компонента «постельные принадлежности» приложения в псевдо-ActionScript:

bedding['size']   = 'king':String
bedding['cover']  = cover:Array

    cover['type']           = 'coverlet':String
    cover['style']          = 'style_one':String
    cover['variation']      = 'varation_one':String
    cover['fabric']         = fabrics:Array

        fabrics[0] = 'paisely':String
        fabrics[1] = 'argyle':String
        fabrics[2] = 'plaid':String

    cover['trim']          = trim:Array

        trims[0] = trim_pair:Array

            trim_pair['type']  = 'trim_one':String
            trim_pair['color'] = 'blue':String

        trims[1] = trim_pair:String
        trims[2] = trim_pair:String

    cover['embellishments'] = embellishment_pair:Array
        embellishment_pair['type'] = 'monogram':String
        embellishment_pair['letters'] = 'TL':String

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

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

Мои вопросы:

1) Может ли быть так, что использование таких вложенных массивов на самом деле не так уж плохо, и я должен просто выпустить это? Это удивило бы меня, но я хочу убедиться, что я не на правильном пути.

2) Если нет, куда мне идти дальше, если я хочу сделать это правильно?

Сверху головы я чувствую, что, возможно, могу сделать все на уроках. Так что мои простыни - это класс, а на кроватях есть экземпляры простыней, а в комнатах - кровати ... и т. Д. Кажется, это будет сложно, но это может быть путь.

Или, может быть, я иду по маршруту XML и сохраняю все параметры комнаты во вложенных пустых узлах XML, которые пользователь затем заполняет при перемещении по приложению.

Это мои мысли, но я хотел бы услышать, что говорят более опытные члены сообщества.

Большое вам спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 09 января 2010

Я бы предложил использовать строго типизированную модель. Изучите использование коллекций и объектов-значений для хранения и извлечения данных. Коллекция может быть классом, который упаковывает массив и обеспечивает чистый интерфейс для извлечения объектов значений, которые он хранит. Объекты значений - это простые объекты, представляющие данные, которые можно собирать различными способами для создания более сложных коллекций. Объекты значений также могут передаваться для передачи данных в различные части приложения. Преимущество использования коллекций и объектов-значений заключается в том, что ваш код (потенциально) будет более явным и более простым для чтения, чем при использовании динамического подхода. Для некоторых недостатком этого подхода является то, что у вас слишком много классов. Лично я предпочитаю работать со многими классами малого и среднего размера, а не с одним монолитным классом.

Если вы не знакомы с концепцией объектов стоимости: http://en.wikipedia.org/wiki/Data_transfer_object.

0 голосов
/ 08 января 2010

AFAIK, AS3 не очень подходит для типа сложной модели данных, которую вы пытаетесь создать.

Вам необходимо полностью отделить пользовательский интерфейс / уровень Flash от вашей системы «инвентаря». Пользовательский интерфейс должен быть полностью абстрактным, без каких-либо знаний или связи с вашей схемой данных или контентом. Этого можно достичь с помощью системы среднего уровня в стиле веб-сервиса, которая обрабатывает всю бизнес-логику, связанную с поиском / извлечением / обновлением ваших данных.

Храните все, что нужно вашему пользовательскому интерфейсу для обработки рендеринга на стороне презентации, в метаданных вашего продукта. Это позволит вам добавлять новые продукты и типы без необходимости обновлять интерфейс каждый раз, когда появляются новые продукты. Например, если продукт поставляется с изображением, сохраните URI для изображения с записью продукта и загрузите его по требованию. Я полагаю, что вы можете расширить это до пользовательских анимаций - просто сослаться на внешний файл .SWF и загрузить его в свое приложение по запросу.

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