Управление динамически создаваемыми контейнерами - PullRequest
0 голосов
/ 30 декабря 2010

Простите, я новичок в Flash Builder 4 и Actionscript 3 (на самом деле, в программировании в целом, за исключением некоторых очень простых вещей). Я смотрел / читал кучу уроков и начал проект, но теперь, похоже, ударил стену. Ответ, скорее всего, прост, но, кажется, намекает на меня.

Как мне (или какой подход я должен использовать) управлять визуальными элементами, например, BorderContainer, который я создал динамически?

Как есть, у меня есть Приложение, содержащее BorderContainer и DataGrid. Во время выполнения 3 новых BorderContainer (которые можно перетаскивать и изменять размер) создаются на основе данных XML, содержащих координаты X & Y, а также значений высоты и ширины, а затем добавляются в существующий BorderContainer. Как бы я хотел, чтобы свойства этих дочерних объектов BorderContainers отображались и оставались актуальными в DataGrid (например, при их перемещении / изменении размера)?

Мои намерения в будущем заключаются в том, чтобы иметь пользовательский компонент, который отображает сводку этих элементов в отдельной области (думаю, Photoshop контролирует «слои», но гораздо более упрощенно), но хотел бы лучше понять, что происходит на первом.

Любой вклад, документация, примеры и т. Д. Приветствуются. Опять же, я прошу прощения за то, что может быть невероятно простым решением, или, если какой-либо из моих языков неясен, я новичок в этом ^ _ ^;

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Я бы создал ArrayCollection BorderContainers с их различными наборами свойств (также убедитесь, что вы вызываете addElement в родительском BorderContainer). Убедитесь, что ваш ArrayCollection объявлен как Bindable, а затем установите его как dataProvider для вашей DataGrid. Затем укажите столбцы для вашей DataGrid на основе свойств, которые вы хотите отобразить (высота, ширина и т. Д.). Теперь, когда изменяются свойства BorderContainers, DataGrid автоматически обновляется.

0 голосов
/ 30 декабря 2010

Предполагая, что это чистый проект AS3, лучший подход - создать словарь из ваших объектов.

Давайте также предположим, что вы создали идентификаторы для компонентов или можете легко создать их во время выполнения.

var containers:Dictionary = new Dictionary();

private function _init():void
{
  //some loop to create objects
  containers[newObject.name] = newObject;
}

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

Теперь, предполагая проект Flex, у нас есть еще несколько подходов, которые мы можем использовать:

  • DisplayObjectContainer реализует getChildByName ()
  • Группа реализует getElementAt и numElements для итерации, проверки имен и ожидаемого возвращаемого значения.

Лично я все еще предпочитаю словарьподход ...

Что касается поддержания актуальности, вы можете заглянуть в Binding (обычно это решение только для Flex) или более уместно исследовать отправленные события:

  • Событие.RESIZE
  • Event.MOVE
  • и т. Д.

В обработчиках просто обновите свой пользовательский интерфейс!

HTH, в противном случае отправьте больше яНфо, и мы посмотрим, что мы можем выяснить.

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