Показать сообщение отдельно
Старый 24.04.2012, 22:15
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
ИМХО какая сетка, зачем сетка?
- Задаемся допуском TOLERATE, начиная с которого всё будет прилипать;
- берем таскаемую панельку;
- гоним циклом по всем остальным (сложность линейная, не квадратичная - ничего страшного);
- смотрим i-ю панельку если Math.abs(panelI.x - draggedPanel.x) < TOLERATE - то делаем draggedPanel.x = panelI.x и прекращаем перебор;
- снова перебираем панельнки, но делаем то же самое уже для y-координаты.
Вот вобщем-то и всё. Только лучше дополнительно учесть, что если Math.abs(panelI.x - draggedPanel.x) < TOLERATE, но по y панельнки друг друга не перекрывают - то ничего делать не нужно.