| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Перемещение объектов, нужен совет |
| Автор: php5 15.8.2007, 10:24 |
| Наваял тут небольшой скрипт по перемещению объекта по вертикали с позиционированием относительно других объектов скрипт вроде бы работает как нужно но при быстром перемежении начинает глючить. Может кто посмотрит и подскажет выход , но я так подозреваю что дело в том что скрипт не успевает перебрать массив объектов function minsize(obj) http://www.phpclub.ru/paste/1853 |
| Автор: 12345c 15.8.2007, 16:22 |
| 1) для кроссбраузерности надо пользоваться .top, .left, а не .pixelTop, ... и в конце писать +'px'; 2) не вдавался далеко в алгоритм, но похоже, что ошибка в том, что Вы предполагаете, что событие наступит в каждой точке и приведёт к перестановке объектов. На самом деле, когда мышь проскакивает высоту рисунка без событий - тут и ошибка. Лечение: перепишите так, чтобы алгоритм не исходил из этого предположения, расставлял рисунки, как будто в первый раз взялся за это дело. |
| Автор: php5 15.8.2007, 17:52 |
| 12345c, не совсем понятно данное предложение «На самом деле, когда мышь проскакивает высоту рисунка без событий - тут и ошибка». При каждом движении мыши я вычисляю точку наименьшего расстояния для каждого объекта поэтому по идеи я не могу проскочить высоту рисунка без события или я что то не так понял ? |
| Автор: 12345c 15.8.2007, 18:37 |
| Когда событие не срабатывает, то по рисунку видно, что затем обрабатывается только один соседний рисунок, на который выполнилось условие "выше-ниже", а не пересматриваются позиции всех рисунков. Сделайте, чтобы расставлялись все. Например, 3-й быстро тащишь вверх, чтобы 1 и 2 не сдвинулись, потом медленно вниз. Прыгает 1 на место 2, а 2 не прыгает на место 3. Алгоритм должен проверять правильность положения всех. (Ввести массив занятости мест; если занимаемое занято - двигать занимающий куда следует. В общем, совсем по-другому устроить алгоритм.) И надо позаботиться об невыделении selection при таскании. Как сделано здесь, например: http://js2.ru/example/JsPrimeryCode-56.htm |
| Автор: php5 16.8.2007, 10:00 |
| 12345c, а как определить когда нужно начать двигать в низ 1 на место 2, а 2 на место 3 ? Или это уже действия при конечном положении передвигаемого объекта т.е пропущен шаг когда 3 объекта оказывается на месте 2 и тот передвигается на место 3. |
| Автор: 12345c 17.8.2007, 14:12 |
| Это уже чисто алгоритмический вопрос. Я бы сделал массив, хранящий целые числа (номера рисунков) и отображающий положение дел с расстановкой предметов. По нему определяете, что куда двигать, и тогда пропуск некоторых щonmousemove не страшен. |