专栏首页奔跑的键盘侠按键精灵——如何留下鼠标移动轨迹

按键精灵——如何留下鼠标移动轨迹

转载请联系授权(微信ID:ctwott)

某些场景,需要留下鼠标移动轨迹,比较合乎视觉感受,不然光标闪来闪去,会不会翻车且不说,对眼睛肯定是不好的刚好上周有小伙伴咨询后台鼠标移动的问题,虽然我没解决,也不知道最终大佬给的方案是否解决了问题。但是解决问题的思路值得探讨和学习。

1

问题背景简介

后台鼠标移动的问题,咨询了一位大佬,他给出的建议是,尝试缓慢移动,每次移动距离在10像素左右,让电脑感觉其实它自己有在慢慢移动这不是自己欺骗自己么比如从坐标10,10移动到100,100,我们可以先移动到20,20,再移动到30,30,接着40,40……一直到最后移动到100,100。

2

实现思路

后来,我给咨询的小伙伴打草稿写了一个实现思路,写的比较潦草,凑合着看一下……

我们假定从左上角移动到右下角,那自然就是x1<x2了,在这个循环里,不断往右下角挪动,每次挪动+7,+7k横纵坐标单位。

7是怎么来的?假如正方形左上角移动到右下角,那对角线长度是7*1.414,比较接近10个像素,虽横纵比例比较多变,但按操作习惯取7八九不离十吧,喜欢研究算法的可以自己研究更合乎实际的参数。

然后,还没完,7句前面漏了一个移动到x2,y2。

3

coding

Call liner_move(10,10,1000,800)

Function liner_move(x1, y1, x2, y2)
    k = (y2 - y1) / (x2 - x1)
    Do While x1 < x2
        MoveTo x1,y1
        x1 = 7 + x1
        y1 = 7 * k + y1
        Delay 20
    Loop
    MoveTo x2, y2
End Function

上面这个用到了斜率,按直线移动,每次移动7,7k个横纵坐标,看着有点牛逼是不是

不过,只能从左上角往右下角移动,如果要从右上角往左下,或者x2=x1,就傻眼了,貌似要进行非常复杂的计算,还要考虑斜率k不存在。这…………

后来灵光一现,写出下面一段简易又高大上的代码,写代码不就是为了实用么?!

Call liner_move(1000, 800, 50, 20)

Function liner_move(x1, y1, x2, y2)
    dx = x2 - x1
    dy = y2 - y1
    Do While sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)>10
        MoveTo x1,y1
        x1 = dx * 0.001 + x1
        y1 = dy * 0.001 + y1
        Delay 0.5
    Loop
    MoveTo x2, y2
End Function

简要说明一下,思路就是电脑的分辨率一般都在2000*1800以内,我们乘以0.001,也不过2*1.8。即使从0,0移动到2000,1800,每次横纵各移动2,1.8,这个距离明显小于10。

基于这个原理,我们每次移动0.001个横纵坐标差额即可,也就是代码中的0.001dx和0.001dy。当然循环会进行1000次,延时设置成0.5的话,也有500ms了,再大的话就比较慢了

本文分享自微信公众号 - 奔跑的键盘侠(runningkeyboardhero),作者:我是奔跑的键盘侠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python——关于排序算法(快速排序法)

    最近一直在写排序的算法,可能讲到合并排序法,很多人就会有点晕乎了,还是要多多研究练习,才能得法。包括我也是,看教程的时候感觉懂了,开始写的时候感觉都忘记了,再复...

    Ed_Frey
  • Python——量化分析常用命令介绍(三)

    量化分析整体思路虽不难,但是要代码实现,其实挺繁杂的,需要很多铺垫工作,比如要先搭建自己的数据库。

    Ed_Frey
  • 按键精灵——qq发图片

    按照正常的节奏,一般周末才有点时间发个帖子,即使兴起,来一篇纯干货吧,话说N年前qq自动群发图文消息软件,都可以拿去卖钱的。

    Ed_Frey
  • 腾讯实习mini项目总结

    第一次参加如此正式的产品项目组中,陌生的环境,陌生人给自己带来了很多的不适应,但正是这种新的成长环境和新的挑战,让我不在做自己熟悉的事,也许正如asoon在mi...

    Dabelv
  • 【javascript】异步编年史,从“纯回调”到Promise

    异步和分块——程序的分块执行 一开始学习javascript的时候, 我对异步的概念一脸懵逼, 因为当时百度了很多文章,但很多各种文章不负责任的把笼统的描述混杂...

    外婆的彭湖湾
  • 日本00后天才CEO的APP上线了!10日元买你的个人信息,你愿意卖吗?

    IT派
  • INAV:一款专用的日志审查导航工具

    LNAV,即Log File Navigator,INAV是一款增强型日志文件查看工具,安全审计人员可以利用INAV来分析并检查日志文件,并从中收集到相关的语义...

    FB客服
  • 你不知道的SSD那些事

    从2005年三星作为第一个进入SSD市场的巨头,到现在短短15年,SSD已经成为非常普遍的存储介质了,相对于机械硬盘HDD,SSD在IOPS上提升了数百倍,带宽...

    焱融科技
  • 快速学习-Hive 数据类型

    对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存...

    cwl_java
  • COVID-19数据分析实战:统计分析及可视化

    第一篇文章和第二篇文章我们对line list 数据集进行清洗,以及对文本内容进行词云分析。

    统计学家

扫码关注云+社区

领取腾讯云代金券