Просмотр полной версии : Алгоритм комплексного выделения нескольких объектов на сцене
inozemcev
19.04.2013, 01:03
Коллеги, буду рад вашей помощи. Мне нужна базовая идея алгоритма выделения нескольких объектов на сцене. Условно есть сетка из нескольких итемов. Необходимо сделать так чтобы при зажатой клавише шифт на клике по какой-либо ячейке выделялись все объекты которые попали в площадь прямоугольника, который образуется между первой и второй выделенной клеткой.
http://marxinfo.com/roosendaal/roosendaal.png
Надо сделать 2 цикла с шагами равными высоте и ширине маленьких итемов.
inozemcev
19.04.2013, 02:28
Справился с задачей с помощью метода hitTestObject http://marxinfo.com/roosendaal/.
Если вам любопытно это для блога о дизайне и инфографике : http://marxinfo.com/
А теперь тоже самое, за один проход, без использования hitTestObject, перебирая только те элементы которые необходимо выделить. При условии, что известна ширина и высота ячейки, ширина (количество элементов в строке) и высота (количество строк) контейнера и имеется непрерывный массив расположенных по порядку элементов. :)
chamele0n
19.04.2013, 02:53
а зачем там вообще hitTestObject ?
этоже сетка и у тебя есть две Point точки этой сетки, пробегаешь двумя циклами и выделяешь ячейки
P.S. Если необходимо просто обвести их общей рамкой, то вообще нет необходимости в переборе.
inozemcev
19.04.2013, 04:22
А посмотрите я сделал так что мышкой можно область выделять. hitTestObject теперь вроде как не избыточно. http://marxinfo.com/roosendaal/
hitTestObject тут вообще ни причём, это всегда делалось одним двумя циклами, кому как по вкусу.
AlexLucas
19.04.2013, 12:37
У вас невозможно выделить один ряд объектов, почему-то, если выделение очень узкое ничего не выделяется.
inozemcev
19.04.2013, 16:50
У вас невозможно выделить один ряд объектов, почему-то, если выделение очень узкое ничего не выделяется.
Спасибо, исправил
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.