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

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

Используя атрибут  active  можно управлять "активностью" элемента в зависимости от нажатых клавиш Shift, Ctrl и Alt, либо независимо от их состояния. 

Атрибут active_time определяет время отображения выделенного элемента. 

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

В примере № 4 демонстрируется выделение "активных" элементов изображения. Можно изменить значения параметров active, draw_active и cursor (слой, изображение которого появляется рядом с курсором, при его движении над "активным" элементом) 

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

В примере №32 показан комплексный пример, демонстрирующий работу апплета с "активными"  элементами.

Управление поиском элементов изображения 

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

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

В группе слоев в каждый момент времени может быть выделен элемент только одного слоя. Слои одной группы упорядочены таким образом, что следующий слой группы имеет более высокий приоритет в смысле выделения элемента. Попадание курсора в элемент "вышележащего" слоя приводит к смене выделенного элемента группы слоев. Однако информация о текущих выбранных элементах всех слоев группы сохраняется, несмотря на то, что выделеным может быть элемент лишь одного слоя группы. Эта информация доступна из программ на JavaScript и может быть использована для изменения текущего контекста апплета или сайта в целом.

Слои разных групп "прозрачны" друг для друга, то есть выборка элементов в них осуществляется независимо,  и одновременно может быть выделено столько элементов, сколько групп слоев задано для поиска. При статическом описании слоев с помощью параметров апплета все, созданные таким образом группы автоматически включаются в список групп слоев для поиска выделяемых элементов. Исключение составляет группа с именем "$$draw_list". Произвольно изменять список групп слоев для поиска выделяемых элементов можно за счет обращения из программ на JavaScript к функции апплета set_active_groups (см. "Методы апплета")

На главную страницу Наверх