Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определить движение курсора Jquery
 
 автор: FiX   (12.02.2014 в 22:05)   письмо автору
 
 

Задача в том, чтобы определить, в какую сторону двигается курсор и на сколько пикселей он сместился после нажатия на левую кнопку мыши.
Т.е. нужен точно такой же принцип, как плагшин jquery imgareaselect.

Сорсы смотрел - не понял. слишком все абстрактно написано... :)

Подскажите, пожалуйста, как определить (повторить) данный принцип, но только с изображением.
Вот что я имею. Но картинка двигается некорректно (причем пока делаю движение по Х - то Y даже не дошел).

$drag.mousedown(function(e){
      $(document).unbind('mouseup');

      $(document).mousemove(function(event){ // при перемещении мыши
        var frame_position_left = $frame.offset().left,
            frame_position_top = $frame.offset().top,
            current_margin = parseInt($source.css('margin-left')),

            // определяем в какую сторону движется мышь
            tmpX = event.pageX - curX,
            newMargin = current_margin + tmpX;

        curX = tmpX;
        if (curX < 50){
          $source.css('margin-left', newMargin);
        }

// пришлось поставить такой таймер, который бы сбрасывал curX  до нуля, т.е. при перемещении курсора отступы прибавляются друг к другу. От этого получается что чем больше двигаешь, тем дальше картина улетает
        var moveTimer = setTimeout(function(){
          curX = 0;
        }, 500);
      }).mouseup(function(){  // когда мышь отпущена
          $(document).unbind('mousemove');
          curX = 0;
        });
    });

  Ответить  
 
 автор: confirm   (13.02.2014 в 01:20)   письмо автору
 
   для: FiX   (12.02.2014 в 22:05)
 

Таймер то зачем? Всевозможные значения (кроме направления входа в область):

$(function() {
     $('#area').mousedown(function(e) {
         var pos = $(this).offset(),
             X   = e.pageX - pos.left,
             Y   = e.pageY - pos.top,
             cur = 'Vcurr: '+Y+'<br>Hcurr: '+X+'<br>';
             $(this).html(cur);
        $(this).mousemove(function(e) {
            var V = Y - e.pageY,
                H = X - e.pageX, 
                V = V > 0 ? 'up: '+e.pageY+'/'+V : 'down: '+e.pageY+'/'+V,
                H = H < 0 ? 'right: '+e.pageX+'/'+H : 'left: '+e.pageX+'/'+H;
                Y = e.pageY;
                X = e.pageX;
            $(this).html(cur+V+'<br>'+H+'<br>'+Math.atan(e.pageY/e.pageX)*(180/Math.PI)); 
        }).mouseup(function(){
            $(this).unbind('mousemove');
        });     
     });
});

<div id="area" style="width:400px;height:400px;border:1px solid #000"></div>

  Ответить  
 
 автор: Fix   (13.02.2014 в 10:02)   письмо автору
 
   для: confirm   (13.02.2014 в 01:20)
 

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

Например, мы двинули картину, потянули ее за левый верхний угол. У картинки стал margin-left -100px. Теперь взяли за правый нижний угол (координаты мыши уже другие), и потянули влево - картинка должна плавно переместиться направо.

Т.е. в вашем случае картинка будет скакать туда-сюда, потому что она позиционируется относительно курсора. А мне нужно чтобы она была на месте и сдвигалась лишь тогда, когда курсор движется.

http://odyniec.net/projects/imgareaselect/ вот тут пример как хочу двигать картинку (там двигается выделение).

  Ответить  
 
 автор: confirm   (13.02.2014 в 10:08)   письмо автору
 
   для: Fix   (13.02.2014 в 10:02)
 

Для того чтобы сдвигать картинку зачем считать пиксели? Нажали, захват, протащили, бросили, все. Если требуется проверка границ, то и проверяйте их достижение.
Посмотрите код работы Drag & Drop.

В моем случае получается положение курсора, направление и знак направления, о чем вы и спрашивали.

А по поводу ссылки смотрите плагины обрезки (cropping), не так там и сложно.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования