PDA

Просмотр полной версии : Алгоритм комплексного выделения нескольких объектов на сцене


inozemcev
19.04.2013, 01:03
Коллеги, буду рад вашей помощи. Мне нужна базовая идея алгоритма выделения нескольких объектов на сцене. Условно есть сетка из нескольких итемов. Необходимо сделать так чтобы при зажатой клавише шифт на клике по какой-либо ячейке выделялись все объекты которые попали в площадь прямоугольника, который образуется между первой и второй выделенной клеткой.

http://marxinfo.com/roosendaal/roosendaal.png

Babylon
19.04.2013, 01:17
Надо сделать 2 цикла с шагами равными высоте и ширине маленьких итемов.

inozemcev
19.04.2013, 02:28
Справился с задачей с помощью метода hitTestObject http://marxinfo.com/roosendaal/.

Если вам любопытно это для блога о дизайне и инфографике : http://marxinfo.com/

alatar
19.04.2013, 02:53
А теперь тоже самое, за один проход, без использования hitTestObject, перебирая только те элементы которые необходимо выделить. При условии, что известна ширина и высота ячейки, ширина (количество элементов в строке) и высота (количество строк) контейнера и имеется непрерывный массив расположенных по порядку элементов. :)

chamele0n
19.04.2013, 02:53
а зачем там вообще hitTestObject ?
этоже сетка и у тебя есть две Point точки этой сетки, пробегаешь двумя циклами и выделяешь ячейки

alatar
19.04.2013, 02:55
P.S. Если необходимо просто обвести их общей рамкой, то вообще нет необходимости в переборе.

Babylon
19.04.2013, 03:08
одним циклом даже лучше.

inozemcev
19.04.2013, 04:22
А посмотрите я сделал так что мышкой можно область выделять. hitTestObject теперь вроде как не избыточно. http://marxinfo.com/roosendaal/

Tails
19.04.2013, 10:26
hitTestObject тут вообще ни причём, это всегда делалось одним двумя циклами, кому как по вкусу.

AlexLucas
19.04.2013, 12:37
У вас невозможно выделить один ряд объектов, почему-то, если выделение очень узкое ничего не выделяется.

inozemcev
19.04.2013, 16:50
У вас невозможно выделить один ряд объектов, почему-то, если выделение очень узкое ничего не выделяется.


Спасибо, исправил