проблемы с jQuery и оптимизацией
вот тут http://cyberua.16mb.com/files/zoom.html есть скрипт (что то типо мини карты ) но он ужасно виснит не понятно почему.
в мозиле вылетает такое сообщение Цитата:
|
cyber,
что-то да есть. Чем больше двигаю, тем больше лаги. Может где-то зациклена функция??? Потому что сначало все ок, а уж потом плохенько. |
Цитата:
смотрите сами function init_drag (e) { move = true; var margin = getMargin(); downX = e.pageX + Math.abs(margin.left) - coord_elem.left; downY = e.pageY + Math.abs(margin.top) - coord_elem.top; $(document).on('mousemove', wrapper); $(document).on('mouseup', MouseUp); } function wrapper(e) { if (move) setTimeout(function (){ MouseMove(e); },30); } function MouseMove (e) { var left, top; var pgX = e.pageX - coord_elem.left; var pgY = e.pageY - coord_elem.top; left = - (downX - pgX); left = Math.min(left, 0); left = Math.max(left, - (img.width() - elem.width())); top = -(downY - pgY); top = Math.min(top, 0); top = Math.max(top, -(img.height() - elem.height())); img.css({ 'margin-top': top+ 'px', 'margin-left':left + 'px' }); } function MouseUp () { move = false; $(document).unbind('mousemove', wrapper); $(document).on('mouseup', MouseUp); } function getMargin () { var top = parseInt(img[0].style.marginTop); var left = parseInt(img[0].style.marginLeft); return {top: top, left: left}; } |
хм интересно, у меня была не большая ошибка
в место $(document).unbind('mouseup', MouseUp); я написал $(document).on('mouseup', MouseUp); и теперь вроде все норм, но почему из за такой маленькой ошибки так его плющило? |
cyber,
Гы .unbind отключает обработчик - .on('mouseup', MouseUp) - ставит новый обработчик |
Цитата:
кстати а как можно оптимизировать что бы было меньши тормозов? |
cyber,
Ксать я не наю вот это верно ? $(document).on('mousemove', wrapper); (просто я со старыми версиями, где оn нет Если обработчик подключается bind то отключается unbind Про on - не знаю |
Цитата:
|
по этой ссылке http://gmap.nurtext.de/examples.html есть мини гугл карта (4я с верху), при перемещение карты позиция точек не меняется но почему то они остаются на месте, как это сделано не могу понять
|
Цитата:
|
cyber,
Я завтра гляну - засыпаю уже |
Цитата:
|
кажется понял :
у гугла карта разбита на блоки и когда я двигаю я двигаю общий контейнер , так как у точки позиция относительно контейнера поэтому она и не двигается |
Цитата:
масштабирование не помогло ? При оnscroll нужно менять не только масштаб у карты но и так же само масштаб у координат <div class="point_on_map"></div> |
Цитата:
и мне было интересно почему у них точки при перемещение не смещаются.. |
cyber,
а где у Вас добавления смещения при drag and drop к <div class="point_on_map"></div> ? |
Цитата:
и я вроде разобрался Цитата:
|
cyber,
Ну сделайте контейнер с картой - postion relative(или абсолюте) - тогда - если точки у Вас внутри контейнера - то будет аналогично вместе с картой |
Цитата:
|
блин опять что то не так
при увеличение все работает, но при уменьшение не правильно function resize_zoom (i) { var point, top, left, posLeft, posTop; point = points.eq(i); posLeft = point.offset().left - coord_elem.left;//текущая позиция точки posTop = point.offset().top - coord_elem.top;//текущая позиция точки top = (getHeight / (getHeight - step.height))/* get(Height/Width) размер картинки после увлечения step.height на сколько увеличить высоту */ left = (getWidth / (getWidth - step.width)); if (!zoom) {// если zoom false уменьшаем top = (getHeight / (getHeight + step.height)); left = (getWidth / (getWidth + step.width)); } return { top: Math.round(top * posTop), left: Math.round(left * posLeft), point: point } } } |
Цитата:
|
я по той ссылке просто код не поменял=)
|
|
Если картинку обернуть вместе с пойнтерами враппером - смещать пойнтеры не нужно ток ты им исходную позицию задавай не top left
а margin-top и margin-left и они должны стоять перед картинкой карты (ксать с margin мож и без обёртки пройдёт |
Цитата:
|
Цитата:
|
cyber,
Попробуйте отдохнуть - имхо вы замучали код и себя - лучше свежая голова! |
Цитата:
просто у меня уже все готово нужно просто добавить еще 1 готовый внешний файл и до делать позиционирование точек при уменьшение |
короче с точками проблемы, ездят как хотят(не только при уменьшение) ,завтра разберусь
|
что я не так делаю :
-что бы получить зум при увеличении я делаю так : текущий размер/ предыдущий размер; -что бы получить зум при уменьшение я делаю так : предыдущий размер / текущий размер |
cyber,
Неть - формула везде одна и таж текущий размер/ предыдущий размер; |
Deff, ваш комментарий http://javascript.ru/forum/events/30...tml#post195321
|
Цитата:
|
cyber,
Вообщем норма - ток неясно нафига ти img { width:1600px; height:900px; cursor: move; -webkit-transition:all 2s ease; -moz-transition:all 2s ease; -o-transition:all 2s ease; transition:all 2s ease; } Красное на карту добавил ?? или время сократи до 0.2 |
Цитата:
т.е норма? точки смещаются с исходной позиции - это не норм. |
cyber,
В Опере норма - ксать убери красное - имхо - лучше ( тормозов не вижу нигде) А в Мозилле и Гугле имхо наверно или отсекаешь дробную часть(там оффсеты дробные) - из-за этого погрешность либо маргин и паддинги где-то лишние потестируй там маргин и паддинг алертом при зуме Воть в JQ высота - ширина http://jquery-docs.ru/CSS/height/ http://jquery-docs.ru/CSS/height/#val http://jquery-docs.ru/CSS/width/ http://jquery-docs.ru/CSS/width/#val |
Цитата:
в опере при уменьшение точки летают как "птицы" (ну меня точно) |
а насчет высоты и ширины я ее так и получаю
var getWidth = img.width(); var getHeight = img.height(); |
а какая разница между
img.height(getHeight); img.width(getWidth); и img.css({ width : getWidth +'px', height: getHeight + 'px', }); |
cyber,
Забей - а то я тьву еще больше запутаю |
Часовой пояс GMT +3, время: 01:58. |