Flex 3: обнаружение столкновений и перемещение объектов после столкновения - PullRequest
0 голосов
/ 10 мая 2011

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

Я создал функцию, которая перебирает элемент повторителя, который используется длясоздать проекты ... конечным результатом этой функции является массив arrayCollection, который содержит:

0. the id number within the repeater
1. the project title
2. x coordinate
3. y coordinate
4. the width of the project
5. the height of the project

Я также создал функцию, которая принимает два объекта в коллекции массивов и определяет, перекрываются ли они.

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

Кроме того, мне нужно убедиться, что перемещение одного проекта не приведет к его перекрытию с другим.

Любые идеи?

РЕДАКТИРОВАТЬ

Понял ... Мне пришлось каждый раз сбрасывать значение y каждого элемента на 0 при каждом перемещении любого проекта, а затем заново оценивать, действительно ли онисталкиваются.

1 Ответ

1 голос
/ 10 мая 2011

На этот вопрос ответить крайне сложно из-за характера проекта, поскольку каждое взаимодействие и то, что вы пытаетесь выполнить, различны.

С учетом сказанного, если бы это был я, я бы попытался использовать полностью управляемый данными подход. Иметь объект «календарь проекта», в котором хранится вся необходимая информация (в основном начальные и конечные метки времени, поскольку они универсальны), а затем помещать его в структуру данных, которая будет иметь смысл: либо массив, либо двусвязный список их порядка в график

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

Я делал нечто подобное в прошлом, это было нелегко, если не сказать больше. Удачи.

...