Документ взят из кэша поисковой машины. Адрес оригинального документа : http://adept.srcc.msu.ru/adept/java/applet_book/group/group.htm
Дата изменения: Mon Jan 15 15:05:25 2007
Дата индексирования: Mon Oct 1 20:08:21 2012
Кодировка: Windows-1251
Группы объектов
Группы объектов

Группы это каталоги, объектами которых являются слои элементов изображения, вектора данных и сами группы. 

Группы нужны:

  • для удобства хранения всего множества объектов
    с которыми одновременно работает апплет;
  • для удобства изменения изображения и активных зон.
  • Состав изображения  для апплета описывается как список групп слоев. 

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

    В примере ? 32 - показано "сложное" множество "активных"  геометрически пересекающихся  элементов изображения, которые включены в разные группы.

    Задание списка элементов группы

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

    Например,
    <param group=имя_группы name=layers_draw value="множество_отображаемых_слоев">

    Группы это аналоги каталогов файловой системы. Помимо атрибута group= слой можно включить в группу, задав имя группы прямо в имени слоя, поскольку имя слоя это фактически имя-путь (как для файла). Разделитель имени - символ '.'(точка) . Если имя начинается с точки, то это означает путь от корня, иначе - путь от текущей группы. Это так же справедливо для задания имени группы в атрибуте group=.
    Фактически отсутствующие группы, заданные в имени объекта (слоя или группы) создаются атоматически при отработке имени-пути. При статическом задании текущим путем является корень дерева объектов.

    Например:
    <param name=group1.group11.layer4
           value="draw_layer=0x1D00 draw_active=0x1F54
                  group=group2 border_width_layer=1
                  border_color_layer=#FF0099
                  fill_color_layer=#CCCCFF
                  border_width=2
                  border_color=#DC143C
                  fill_color=#40E0D0">

    Здесь слой layer4 создается в группе group11, которая в свою очередь включается в группу group1, размещаемую в корне. Кроме того, слой layer4 включается в группу group2, которая оказывается на одном уровне с группой group1 - в корне. Необходимые группы group1, group11 и group2 создаются автоматически при создании слоя по его статическому описанию.

    Описание групп с помощью статических параметров апплета имеет некоторые ограничения:
    - нет явного описания состава групп,
    - имеется возможность включения слоя максимально в две группы (через имя слоя и через атрибут group=).
    Однако этих возможностей часто может быть вполне достаточно.

    Статических параметров апплета может не хватить для описания групп объектов в следующих случаях:
    - если в момент создания слоя неизвестно в какую группу его включить;
    - если уже созданный слой динамически переключается из одной группы в другую;
    - если слой должен быть включен более чем в две группы.

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

    Апплет предоставляет ряд методов для редактирования состава групп и их элементов:
    (см.  "Методы апплета" (справочная информация). В поле для поиска можно набрать слово "group" или выбрать разделы, посвященные  управлению изменения состояния, редактированию состава групп, слоев, изменению атрибутов элемента.)

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

    Напрмер,

    // установка списка слоев для отображения  (создается группа с именем $$draw_list)
          set_layers_draw("#layer1 #layer2");
    // создание группы с именем active, в которую  входят элементы слоя layer2
          add_group( "active", "#layer2");

    Для предварительной очистки списка необходимо в качестве первой лексемы в строке  задать символ '%'. Для непосредственного задания слоя или массива данны по имени необходимо перед  именем слоя поместить символ '#' - #layer_name. Для включения всех объектов  некоторой группы необходимо указать имя группы, перед которым нужно поместить  символ ':' (двоеточие) - :group_name

    Для включения группы, а не входящих в ее состав объектов, необходимо включить в список непосредственно имя группы. Имеется возможность включить в состав группы растровые изображения из файлов,  не создавая предварительно никаких слоев и не включая в них соответствующие элементы  типа image. Для этого можно вместо имени слоя нужно задать непосредственно полный URL  или локальный путь к файлу с растровым изображением, перед которым стоит символ '!'.  В этом случае автоматически создается (если отутствует) слой с именем равным имени файла  с растровым изображением и в него включается один элемент типа "image" с указанным файлом  и для него устанавливаются атрибуты, обеспечивающие его отображение без смещения и  масштабирования, начиная от левого верхнего угла изображения создаваемого апплетом. 

    Например,

    // задание текущей группы
        
    set_current_group("myGroup")
    // задание нового списка групп cлоев для отображения
          set_draw_groups("%:new_group1 :new_group1");
    // добавление в состав группы растрового изображения из файла
          add_group( "myGroup", "!images/myImage.gif");
    На главную страницу Наверх