Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Перемещение объектов, нужен совет


Автор: php5 15.8.2007, 10:24
Наваял тут небольшой скрипт по перемещению объекта по вертикали с позиционированием относительно других объектов скрипт вроде бы работает как нужно но при быстром перемежении начинает глючить. Может кто посмотрит и подскажет выход , но я так подозреваю что дело в том что скрипт не успевает перебрать массив объектов function minsize(obj)  smile 

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, не совсем понятно данное предложение «На самом деле, когда мышь проскакивает высоту рисунка без событий - тут и ошибка». 
При каждом движении мыши я вычисляю точку наименьшего расстояния для каждого объекта   поэтому по идеи я не могу проскочить высоту рисунка без события или я что то не так понял ?  smile 

Автор: 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 не страшен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)