找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7973|回复: 8

[求助] 有没有划圆圈的操作命令

[复制链接]

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
发表于 2021-3-30 12:56:38 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
内容如题,安卓按键有没有类似按下某个按键划圆圈的操作命令,或者怎样去实现这样操作的思路,求指点
楼主热帖
  • 打卡等级:行侠仗义

1080

主题

2101

回帖

4281

积分

院长

鲜花
6
猫粮
7395
QQ
发表于 2021-3-30 14:19:36 | 显示全部楼层
没, 你可以根据圆的公式来配合touchdown, touchmove, touchup实现

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-3-30 20:27:02 | 显示全部楼层
老师讲话句句经典,一会儿回去试试,结果我会发到楼下,谢谢老师

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-3-31 01:29:25 | 显示全部楼层
Delay 1000
//'画圆圈测试-----------------
//'最基础的命令操作例子----------
//TouchDown 312,1400, 1//按住屏幕上的100,100坐标不放,并设置此触点ID=1
//TouchMove 354,1355, 1, 200//将ID=1的触点花200毫秒移动至300,300坐标
//TouchMove 354,1355, 1, 200//将ID=1的触点花200毫秒移动至300,300坐标
//Delay 200
//TouchUp 1//松开弹起ID=1的触点
//Delay 1000
//TracePrint "例子一运行完毕"
//Delay 1000
//'思路实验例子1------------------
//'定义坐标
//Dim x,y,x上限,y上限
//x = 312
//y = 1400
//x上限 = 354
//y上限 = 1355
//TouchDown x, y, 1
//TracePrint "按下的坐标是" & x,y
//TracePrint "开始右上弧移动"
//Do
//    x = x + 1
//    y = y - 1
//    '移动中
//    TouchMove x,y, 1, 20
//    If x = x上限 or y = y上限 Then
//        TracePrint "右上弧移动完成"
//        Delay 1000
//        TouchUp 1
//        TracePrint "此刻结束坐标是" & x,y
//    End If
//    Delay 10
//    '经实验这种思路不行,话出来的还是斜线,此思路作废,重新找思路----------
//Loop
'找到一个看不懂的命令,拿来做实验,先把例子照搬上来------------
'费了半天劲才找到下面这个引用插件的命令、、、、,脑子笨,老师讲过的东西几天就忘干净了,,,,新手小白伤不起。。。
Import "TURING.luae"
//Dim aX, aY, bX, bY
//aX = 100
//aY = 100
//bX = 150
//bY = 100
//TracePrint TURING.AngleCalc(aX, aY, bX, bY)
//'调试了一下,上面的例子倒是能运行,但感觉跟画圈没多大关系,于是接着找相关命令------
//命令名称 xyRotate 坐标系旋转
//命令功能 指定的坐标进行坐标系的旋转  
//语法格式 {newX,newY} = TURING.xyRotate(qx, qy, sWidth, sHeight, degree)
//参数说明
//qx:整数型,x坐标
//qy:整数型,y坐标
//sWidth:整数型,可选,屏幕宽度(默认0)
//sHeight:整数型,可选,屏幕高度(默认0)
//degree:整数型,可选,旋转角度(默认270,支持:0,90,180,270,-90)
'细分参数中、、、
'{newX,newY} = TURING.xyRotate(qx, qy, 0, 0, 180)
//'尝试照葫芦画瓢
//Dim x,y,qx, qy
//{newX,newY} = TURING.xyRotate(qx, qy, 1920,1080, 180)
//TracePrint x,y
//Dim X = 50
//Dim Y = 30
//逆时针旋转90度的坐标系
//Dim newXY = TURING.xyRotate(X,Y,1920,1080,180)
//TracePrint newXY[1]
//TracePrint newXY[2]
//不对不对,这个命令还是不对,再找。。。。。
//命令名称 AngleCalc 角度计算
//命令功能 角度计算,指北为0度  
//语法格式 Angle = TURING.AngleCalc(aX, aY, bX, bY)
//参数说明 aX:整数型,圆心点x
//aY:整数型,圆心点y
//bX:整数型,移动点x
//bY:整数型,移动点y
//返回值 Angle:整数型,角度(指北为0度)
//Dim aX, aY, bX, bY
//aX = 100
//aY = 100
//bX = 150
//bY = 100
//TracePrint TURING.AngleCalc(aX, aY, bX, bY)
'好吧,目测这些命令都不能实现画圈操作,那么我就只能用最最笨的办法了,(定义12个点,画出接近圆形的轨迹)
'开搞中====================
//Dim 点1=312,1392,点2,点3,点4,点5,点6,点7,点8,点9,点10,点11,点12
//TracePrint 点1
'忽然发现上面那样做的话太麻烦了,但理论肯定是能实现的,而我就不去做了,因为我想尝试一下另一个办法,不知道能否找出一点比较省事的规律,摸索中。。。。
'思考开始====
'声明:所画的圈都是以顺时针旋转的前提下
'先给一个圆的中心点,中心点x,中心点y,
'再给一个与中心点平行的左侧移动点,移动点x,移动点y,
'再给一个与中心点垂直的上方移动点,上方移动点x,上方移动点y。
'得到了这单个点,能构成一个三角形,再把三角形左上角的移动路径边分成三段,四个点。
'抓抓实操中。
Dim 中心点x,中心点y,移动点1起点x,移动点1起点y,移动点1终点x,移动点1终点y
中心点x = 300
中心点y = 1600
移动点1起点x = 200
移动点1起点y = 1500
移动点1终点x = 300
移动点1终点y = 中心点x - 移动点1起点x '保证移动的是一个正三角形
'定义路径中的两个分割点
Dim 分割点1x,分割点1y,分割点2x,分割点2y
分割点1x = (移动点1终点x - 移动点1起点x) / 4
分割点1y = (移动点1起点y - 移动点1终点y) / 4
TracePrint 分割点1x,分割点1y
分割点2x = 分割点1x*2
分割点2y = 分割点1y * 2
TracePrint 分割点2x,分割点2y
'得出的是一个有小数点的坐标数值,直接tap一点看能否点击,不能点击就考虑用取绝对值后再试试。
Tap 分割点2x, 分割点2y
'目测点击成功了,但是莫机器没看到轨迹,换个命令再试试
Touch 分割点2x, 分割点2y, 1000
'当前脚本第105行:25 350
'当前脚本第108行:50 700
'貌似点能按住,但是按的坐标不对,肯定是上面计算有问题,脑子有点乱,很晚了,要睡觉了,明天还要早起。。。
'我知道这种方法太笨了,一定有一些很简便的公式也许几下就能得到想要的结果,但是我不想走捷径,我也不想有人现在告诉我答案,我需要自己去把它一点点琢磨出来
'虽然这个途中会经历很多失败,但是说真的我很享受这个钻研的过程呢,呵呵,先睡了,后面继续钻研
//未完待续+++++++++++++++++++++++++++++++++++++++++

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-3-31 02:05:32 来自手机 | 显示全部楼层
临睡前再啰嗦一句:综合上述得出几个问题需要标记一下,后续去解决。:1,xy是小数点时点击的位置能否正确,正确?还是接近目标点。2,尝试把圆的周长算出来,再÷4,得到四分之一的边长去÷90度?得到移动一度时xy的偏移量?然后再用偏移量去细分或者去和xy坐标关联?可能有效果?后续待实验。这过程真刺激哈哈

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-3-31 13:48:04 | 显示全部楼层
Delay 1000
Dim a,b
a = 285
b = 843.9
Tap a, b
TracePrint a,b'当前脚本第6行:285 843.9
Swipe a, b, 423.2,1022.8
TracePrint a,b'当前脚本第8行:285 843.9
'经测试,点击坐标小数依旧能正常点击,第二个想法感觉不对,所以就没去做。直接寻找了下面一堆方法,结果还是无解
//'圆周公式,直径*派=周长
//Dim 中心x,中心y,移动x,移动y,结果
//中心x = 300
//中心y = 1000
//移动x = 200
//移动y = 900
//For 3
//    '顺时针旋转1度
//    结果 = xyRotate(中心x, 中心y, (2 / 2) + 1)
//    TracePrint 结果[1]
//    TracePrint 结果[2]
//Next
//Import "TURING.luae"
//
//结果 = TURING.GetImageData(中心x, 中心y, 0)
//按一定角度旋转图像
//Call TURING.Filter_Rotate(1)
//TracePrint 结果[1]
//'找了一大圈依旧没找到好的有效读取旋转轴一端的坐标命令,其实对于数学公式我都忘了,都是百度的。。。对于学数据那块就也是没听太懂,
//'于是我想要实现这种画圈操作也许用重新写一个插件功能,至于插件怎么写怎么放进精灵里执行我还没学,
//'只是隐约觉得写这个插件里面至少会用到数组这块知识,于是就想着重温一下数组这块知识
//'下面的代码是老师在课堂上举的例子,看了后脑子里产生的第一个疑惑就是怎么用一行调试输出,输出数组里所有成员比如:
//'a(0)....a(10),输出a(0-10所有成员的值),我的第一个错误选择是这么做的:TracePrint a(0 to 10)
//'发现不行,改成:TracePrint a(0) to a(10),还是不行,再改成:TracePrint a(0) to a(10),依旧不行,最后才做成下面那样的输出格式,测试是可以的。
//'我想说老师说的对,数组这东西确实比较难理解,比较烧脑,同样一个数组,不同的人学习就会遇到各种不同的奇葩问题和疑惑,这疑点可能老师在讲课是孤寂也没想到,
//'然后我继续看,老师举的第二个例子,就右出现一种奇葩疑惑问题。
//Dim a()
//a(0) = 0
//a(1) = 1
//a(2) = 2
//TracePrint (a(0) & a(2))
//'下面是老师举的第二个例子
//Dim a()
//Dim b
//a(0) = 456789
//a(1) = 123456
//a(2) = 789123
//'然后把数组a赋值给了b
//b = a
//TracePrint b    '结果是错误的,老师说数组只能输出数组里的成员的值,不能整个把数组概括的输出,这里我学到了,不多说。
//'然后老师又在下面打了这行代码,问输出的结果会是什么。和我想的一样,是456789,
//TracePrint b(0)
//'加上这两行代码后老师问输出的会是什么?45678?还是aabbcc?
//b(0) = "aabbcc"
//TracePrint a(0)
//'就再这里我就又产生了一另一个疑惑了,疑惑是:
//'刚开始我没看到下面的TracePrint a(0),我以为会输出45678,结果却是aabbcc,我想:这中特性难道是和dim类似吗?
//'比如dim定义变量不管是在哪行定义,脚本都会优先执行。怀着这个疑惑的想法,继续听了老师后面讲的一大堆盒子啊箱子啊班级啊QQ号啊等一大堆例子反而感觉更加迷惑了。。。。
//'最后就觉得彻底迷糊了,在百思不得其解的状态下忽然我看到了最下面那两行代码:b(0) = "aabbcc"  TracePrint a(0)
//'感觉瞬间懂了,然后就想给老师挑毛病了哈
//'首先我不是说老师讲的不好不够清楚,我知识觉得老师在讲某一点的时候,可能举的例子不够贴切吧,
//'也许老师是想用现实中的一些东西给我们讲可能我们会更好理解一点,但我觉得这个可能也是因人而异把,
//'反正我是觉得就用里面的代码举例子做关系分析比拿现实的东西要好理解很多。
//'最后看到这,我对数组的理解就是,我也不知道是不是完全正确,就只是简单说说个人理解
//'变量是一个箱子,数组就相当于一个房子,Dim a(),b a是数组    b是变量  a(0) = 456789  b = a就是把a的数组整个数据传给了b,并且把b也变成了和a一样的数组
//'能怎么调用a数组里的成员就一样可以调用b数组里的成员。
//'对于那个我豁然开朗的疑惑的理解就是,我想到了下面这个例子,
//Dim a,b
//a = 0
//b = 1
//TracePrint b
//b = a
//TracePrint b
//b = "xxxx"
//TracePrint b
//'完全是变量后赋值覆盖掉前面赋值的特性,这样感觉就很好理解了
//'啰嗦这么大一堆我承认我太笨了,我可是报着要搞出画圈操作参数来的,就这一个数组就叫我琢磨好半天、、、
//'不啰嗦了,接着学

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-4-1 23:03:47 | 显示全部楼层
Delay 1000
'研究了一堆公式也没整懂,没文化没办法。。。
'只好从别人手里抄来了一份画圈公式,封装成函数了
'但是我觉得这个函数还可以优化一些东西,
'比如逆时顺时画圈方向调整
'比如是按下滑动还是逐个点击
'还有感觉好像还可以把中心点坐标换成目标点坐标感觉更加好操作一些
'然而,但是,以上的这些东西我都不会整。。。。
'希望哪位大师兄或者老师能给改进一下这个画圈函数,把它做的更完善一点或者把它写成一个插件集成到紫猫老师的插件中去行不行。
Call 逆时针圆圈 (559,1482,200,25,70)
Function 逆时针圆圈 (中心x,中心y,半径,点数,每个点之间的移动延迟)
    Dim x,y,n
    x = 0
    y = 0
    n = 0
    Delay 1000
    x = 中心x - 半径 * cos(n)
    y = 中心y + 半径 * sin(n)
    TracePrint x,y
    TouchDown x, y, 1
    While n<3.1415926*2
        x = 中心x - 半径 * cos(n)
        y = 中心y + 半径 * sin(n)
        TracePrint x,y
        '说真的我真闹不清想不通下面这个n在这起的作用是个上面原理。。。反正去掉它就不行了。
        n = n + (6.2831852 / 点数)
        TouchMove x, y, 1
        Delay 每个点之间的移动延迟
    Wend
    TouchUp 1
End Function
'以上函数亲测可用,如果想顺时针画圈就把
'x = 中心x - 半径 * cos(n)
'y = 中心y + 半径 * sin(n)
'换成
'x = 中心x + 半径 * cos(n)
'y = 中心y - 半径 * sin(n)
'就可以了,但是我找不到好的方法把这两个方向公式写到一个函数中去
'最后真心希望能有人帮忙把这个函数改完善一点,谢谢了。(>^ω^<)

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-4-3 02:32:11 | 显示全部楼层
本帖最后由 992593818 于 2021-4-3 02:35 编辑

Delay 1000
'思索学习了好几天,虽然始终没搞懂函数运算原理,但还以依靠捡来的公式写出了效果,
'今天把思路整理了一下,很晚了,要睡了,明天准备把理想的画圈函数写出来,晚安了(>^ω^<)
Call 画圆(0,559, 1482, 200, 6, 900, 1)
'Delay 1000
'Call 画圆圈(11, 559, 1482, 200, 3, 900, 3)
'Delay 1000
'Call 画圆圈(1,559, 1482, 200, 6, 90, 3)
Function 画圆 (旋转方向,中心x,中心y,半径,点数,速度,次数)
    '++sc是逆时针从下往上,向右上角起笔
    '-+sc是顺时针从下往上,向左上角起笔
    '+-sc是顺时针从上往下,向右下角起笔
    '--sc是逆时针从上往下,向左下角起笔
    '++cs是顺时针从右到左,向左下角起笔
    '-+cs是逆时针从左到右,向右下角起笔
    '+-cs是逆时针从右到左,向左上角起笔
    '--cs是顺时针从左到右,向右上角起笔
    '--cs/2是顺时针从左到右,向右上角起笔
    '+-cs/2是逆时针从右到左,向左上角起笔
    '-+cs/2是逆时针从左到右,向右下角起笔
    '++cs/2是顺时针从右到左,向左下角起笔
    '++sc/2是逆时针从下往上,向右上角起笔
    '-+sc/2是顺时针从下往上,向左上角起笔
    '+-sc/2是顺时针从上往下,向右下角起笔
    '--sc/2是逆时针从上往下,向左下角起笔
    '参数一圆还是半圆,参数二旋转方向,参数三,滑动方向,参数四,起笔方向,后面跟参数N...中心x,中心y,半径,点数,速度,次数
    If 旋转方向 = 0 Then
        Dim x,y,n,a
        x = 0
        y = 0
        n = 0
        x = 中心x - 半径 * sin(n)
        y = 中心y - 半径 * cos(n)
        TracePrint x,y
        TouchDown x, y, 1
        Do
            If n >= 6.2831852 / 2 Then
                a = a + 1
                n = 0
                TracePrint "一圈完成"
                If a = 次数 Then
                    TracePrint "满足跳出"&a
                    Exit Do
                End If
                Delay 1000
            End If
            n = n + (6.2831852 / 2 / 点数)
            x = 中心x - 半径 * sin(n)
            y = 中心y - 半径 * cos(n)
            TracePrint x,y
            TouchMove x, y, 1
            Delay 速度
        Loop
        TouchUp 1
    ElseIf  旋转方向 = 1 Then
        x = 0
        y = 0
        n = 0
        x = 中心x + 半径 * cos(n)
        y = 中心y - 半径 * sin(n)
        TracePrint x,y
        TouchDown x, y, 1
        Do
            If n >= 6.2831852 Then
                a = a + 1
                n = 0
                TracePrint "一圈完成"
                If a = 次数 Then
                    TracePrint "满足跳出"&a
                    Exit Do
                End If
                Delay 1000
            End If
            n = n + (6.2831852 / 点数)
            x = 中心x + 半径 * cos(n)
            y = 中心y - 半径 * sin(n)
            TracePrint x,y
            TouchMove x, y, 1
            Delay 速度
        Loop
        TouchUp 1
    Else
        TracePrint "参数二不正确请选择正确的参数,“0”=右下方起笔,“1”=左上方起笔"
    End If
End Function

1

主题

23

回帖

25

积分

按键电脑&手机班学员

鲜花
0
猫粮
69
 楼主| 发表于 2021-4-3 19:24:54 | 显示全部楼层

做出来了

本帖最后由 992593818 于 2021-4-3 19:50 编辑

做出来了

画圈函数.txt

16.51 KB, 下载次数: 7, 下载积分: 猫粮 -2

画圈函数.txt

16.51 KB, 下载次数: 0, 下载积分: 猫粮 -2

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-3-29 12:50

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表