Author Topic: Почему не перетаскивает ссылку?  (Read 4826 times)

0 Members and 1 Guest are viewing this topic.

San4ous

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #15 on: November 08, 2016, 05:28:55 PM »
Да с перетаскиванием такое бывает. Нужно плавно двигать курсор по опорным точкам. Для этого потребуется  скрипт плавного перемещения. Но я не знаю как он будет работать с отрицательными координатами.
Code: (clickermann) [Select]
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_SPEED = 3  // множитель скорости
   
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   
   $MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
   
   IF($MOVE_SPEEDVAR < 1)
      $MOVE_SPEEDVAR = 1
   END_IF
   
   $MOVE_step=($dist-1)/$MOVE_SPEEDVAR
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
      WAITMS(1)
   END_CYC
   
   MOVE($MOVE_END_X, $MOVE_END_Y)   //Передвинуть окончательно в заданную точку
END_SUB


//1--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(97)=1))
   LCLICK(-1273,184)
END_IF
//2--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(98)=1))
   LDOWN($_xmouse,$_ymouse)
   WAITMS(50)
   mouse_move(-1070,185)
   LUP(-1,-1)
END_IF
//3--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(99)=1))
   LDOWN($_xmouse,$_ymouse)
   WAITMS(50)
   mouse_move(-884,185)
   LUP(-1,-1)
END_IF
//4--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(100)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1066,26)
   LUP(-1,-1)
END_IF
//5--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(101)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1259,26)
   LUP(-1,-1)
END_IF
//6--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(102)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1456,24)
   LUP(-1,-1)
END_IF
//7--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(103)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1259,26)
   LUP(-1,-1)
END_IF
//8--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(104)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1259,26)
   LUP(-1,-1)
END_IF
//9--------------------------------------------------------
if((iskeydown(111)=1) and (iskeydown(105)=1))
   LDOWN($_xmouse,$_ymouse)
   mouse_move(1259,26)
   LUP(-1,-1)
END_IF
WAITMS(20)


ОООО, огромное спасибо! Попробую завтра! Если получится - с меня виртуальная поляна! :)

San4ous

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #16 on: November 08, 2016, 05:43:12 PM »
Нет, там всё понятно что он делает и зачем.
Есть открытые вкладки. Допустим одна основная и 10 рабочих. Вкладки должны быть доступны всегда и их порядок не должен нарушаться.
Поэтому чтобы открыть новую ссылку во вкладке, к примеру 3, просто берёт и перетягивает ссылку на нужную вкладку тем самым обновляя её.
^^^<---- ВО ВО ВО! Чётко и изящно ;D ;D ;D
Как Боженька молвил! 8)

Я думаю не срабатывает из-за отсутствия задержек. При сериях
Code: (clickermann) [Select]
LDOWN($_xmouse,$_ymouse)
LUP(..., ...)
с разницей в пол экрана, любой браузер будет реагировать через раз.

Задержки пробовал WAITMS(20), WAITMS(50), WAITMS(100), WAITMS(200) и даже WAITMS(500).
Результат тот же: работает через раз!

Мне непонятна фраза
Quote
такое впечатление что перетягивает ссылку, только если я в это время случайно дёрну мышкой
где "держу"? Ведь в скрипте указатель мыши подразумевается над ссылкой  :-\
[/quote]
Так и есть - над ссылкой! Но я заметил что если, например, я наведу мышку на ссылку и отпущу(уберу руку с мышки) - скрипт не работает. Если продолжаю держать мышку - скрипт работает через раз. Такое чувство что скрипт на 50% работает с алкоголиками в которых руки трусятся ;D, но я думаю что синька не является решением проблемы ;D

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #17 on: November 08, 2016, 06:38:33 PM »
Задержка должна быть. 20-50 и даже 100 вполне нормально. Иногда и 200-300 никак не заметно, а стабильности добавляют.

Осталось порешить ещё вопрос, а где задержка в "межсезонье"? Когда мы ожидаем нажатия клавиш?
Потому как в этом случае процессор грузится на 20-25%. Что запросто может сбить перетаскивание.

Code: (clickermann) [Select]
IF(iskeydown(111) = 1)
    //1--------------------------------------------------------
    IF(iskeydown(97) = 1)
        LCLICK(-1273,184)
        WAITMS(200)
    END_IF
    //2--------------------------------------------------------
    IF(iskeydown(98) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(-1070,185)
        WAITMS(50)
    END_IF
    //3--------------------------------------------------------
    IF(iskeydown(99) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(-884,185)
    END_IF
    //4--------------------------------------------------------
    IF(iskeydown(100) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1066,26)
        WAITMS(50)
    END_IF
    //5--------------------------------------------------------
    IF(iskeydown(101) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1259,26)
        WAITMS(50)
    END_IF
    //6--------------------------------------------------------
    IF(iskeydown(102) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1456,24)
        WAITMS(50)
    END_IF
    //7--------------------------------------------------------
    IF(iskeydown(103) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1259,26)
        WAITMS(50)
    END_IF
    //8--------------------------------------------------------
    IF(iskeydown(104) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1259,26)
        WAITMS(50)
    END_IF
    //9--------------------------------------------------------
    IF(iskeydown(105) = 1)
        LDOWN($_xmouse,$_ymouse)
        WAITMS(50)
        LUP(1259,26)
        WAITMS(50)
    END_IF
ELSE
    WAITMS(50)
END_IF

Или так:
Code: (clickermann) [Select]
IF(iskeydown(111) = 1)
    $num = 0
    FOR($i=97, $i < 106)
        IF(iskeydown($i) = 1)
            $num = $i
        END_IF
    END_CYC
   
    IF($num > 0)
        IF($num = 97)
            LCLICK(-1273,184)
        ELSE
            LDOWN($_xmouse,$_ymouse)
            WAITMS(50)
           
            SWITCH($num)
            CASE(98)
                LUP(-1070,185)
            CASE(99)
                LUP(-884,185)
            CASE(100)
                LUP(1066,26)
            CASE(101)
                LUP(1259,26)
            CASE(102)
                LUP(1456,24)
            CASE(103)
                LUP(1259,26)
            CASE(104)
                LUP(1259,26)
            CASE(105)
                LUP(1259,26)
            END_SWITCH
            WAITMS(50)
        END_IF
    ELSE
        WAITMS(50)
    END_IF
ELSE
    WAITMS(50)
END_IF

И почему на кнопки 101, 103, 104, 105 - одни координаты перетаскивания?
« Last Edit: November 08, 2016, 06:51:30 PM by Vint »


Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #18 on: November 08, 2016, 09:48:23 PM »
И почему на кнопки 101, 103, 104, 105 - одни координаты перетаскивания?
так этож вкладки, а не блошивые собаки в конуре, они сами себе место в окне найдут. ;D

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #19 on: November 23, 2016, 03:46:58 AM »
А разве есть отрицательные координаты? Мне почему-то казалось, что координаты отсчитывались, как положено, от самого левого экрана, с левого верхнего угла. Получается, если окно заведено за угол/за пределы экрана, то в координаты за пределами тоже можно тыкать (просто подсчитав нужное смещение)?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #20 on: November 23, 2016, 01:41:56 PM »
А разве есть отрицательные координаты? Мне почему-то казалось, что координаты отсчитывались, как положено, от самого левого экрана, с левого верхнего угла. Получается, если окно заведено за угол/за пределы экрана, то в координаты за пределами тоже можно тыкать (просто подсчитав нужное смещение)?

Если подключишь дополнительный монитор и расположишь его левее основного то бери отрицательные.
Но как раз с доп монитором слева и есть некоторые проблемы.

А пока монитор один клики за его пределы без привязки идти не будут.


Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #21 on: November 23, 2016, 05:09:27 PM »
Если подключишь дополнительный монитор и расположишь его левее основного то бери отрицательные.
Но как раз с доп монитором слева и есть некоторые проблемы.

А пока монитор один клики за его пределы без привязки идти не будут.
А, так разговор про моники, а не виртуальные десктопы?
Я вот как раз понемногу подумываю за дополнительный виртуальный рабочий стол, мож поэкспериментирую.
Ух, и тут эта родимая привязка, а что, с привязкой клики за границей пройдут (ну в общем случае, в нормальных окнах)?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Почему не перетаскивает ссылку?
« Reply #22 on: November 23, 2016, 05:53:25 PM »
Ух, и тут эта родимая привязка, а что, с привязкой клики за границей пройдут (ну в общем случае, в нормальных окнах)?
Пройдут. Там же локальные координаты. Им координаты экрана уже побоку.