10 如何实现执行脚本前输入指定坐标,实现点击不同位置的脚本

发布于 2022-11-10 04:17:47

情况:需要点击1-8个不同坐标,
例如
a = 1.1
b = 2.2
c = 3.3 一直到h,
如何实现:在执行脚本前时,弹出输入框可以直接输入a-h,实现点击对应坐标?

查看更多

关注者
0
被浏览
477
Evan
Evan 认证专家 2022-11-11
function main()
  html = [[
    <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
  </head>

  <body>
  <!-- 输入框设置-->
    <input id="a" type="text" value="坐标a"/>
    <input id="b" type="text" value="坐标b"/>
    <input id="c" type="text" value="坐标c"/>
    <!-- 按钮区域,此处必须写,否则无法关闭动态UI-->
    <div style="padding-top: 10px">
        <!-- onOk()和onCancel()需要和JS内的function onOk() function onCancel()对应 -->
      <button onclick="onOk()">确定</button>
      <button onclick="onCancel()">取消</button>
    </div>

    <script>

      function onOk() {
        // 获取输入框内的值
        var data = {
          a: document.getElementById("a").value,
          b: document.getElementById("b").value,
          c: document.getElementById("c").value,
        };

        // touchelf.return()为触摸内置函数, 此函数将关闭UI, 并将数据发送给sys.ui.show(), 作为其返回值
        touchelf.return(
          JSON.stringify({
            type: "ok",
            data: data,
          })
        );
      }

      function onCancel() {
        touchelf.return(JSON.stringify({ type: "cancel" }));
      }
    </script>
  </body>
</html>
  ]]
  --将html写入文件
  flag,err = file.write("/var/touchelf/input.html",html);
  res = sys.ui.show("/var/touchelf/input.html",100,100,400,500)
  sys.log(res)
  --json转table
  t = codec.json.decode(res)
  --用,分割 坐标填写方式  100,100
  a = t.data.a:split(',')
  b = t.data.b:split(',')
  c = t.data.c:split(',')
  sys.log(a)
  --点击坐标.延迟什么的自己加吧
  touch.tap(a[1],a[2]); 
  touch.tap(b[1],b[2]); 
  touch.tap(c[1],c[2]); 
end
3 个回答
chumo123_
chumo123_ 2022-11-12

function main()

html = [[
  <!DOCTYPE html>

<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
</head>

<body>
<!-- 输入框设置-->
  <input id="a" type="text" value="坐标a"/>
  <input id="b" type="text" value="坐标b"/>
  <input id="c" type="text" value="坐标c"/>
  <input id="d" type="text" value="坐标d"/>
  <input id="e" type="text" value="坐标e"/>
  <input id="f" type="text" value="坐标f"/>
  <input id="g" type="text" value="坐标g"/>
  <input id="h" type="text" value="坐标h"/>

  <!-- 按钮区域,此处必须写,否则无法关闭动态UI-->
  <div style="padding-top: 10px">
      <!-- onOk()和onCancel()需要和JS内的function onOk() function onCancel()对应 -->
    <button onclick="onOk()">确定</button>
    <button onclick="onCancel()">取消</button>
  </div>

  <script>

    function onOk() {
      // 获取输入框内的值
      var data = {
        a: document.getElementById("a").value,
        b: document.getElementById("b").value,
        c: document.getElementById("c").value,
        d: document.getElementById("d").value,
        e: document.getElementById("e").value,
        f: document.getElementById("f").value,
        g: document.getElementById("g").value,
        h: document.getElementById("h").value,
      };

      // touchelf.return()为触摸内置函数, 此函数将关闭UI, 并将数据发送给sys.ui.show(), 作为其返回值
      touchelf.return(
        JSON.stringify({
          type: "ok",
          data: data,
        })
      );
    }

    function onCancel() {
      touchelf.return(JSON.stringify({ type: "cancel" }));
    }
  </script>
</body>

</html>

]]
--将html写入文件
flag,err = file.write("/var/touchelf/input.html",html);
res = sys.ui.show("/var/touchelf/input.html",100,100,400,500)
sys.log(res)
--json转table
t = codec.json.decode(res)
--用,分割 坐标填写方式  100,100
a = t.data.a:split('152,287')
b = t.data.b:split('372,297')
c = t.data.c:split('612,280')
d = t.data.d:split('160,555')
e = t.data.e:split('389,536')
f = t.data.f:split('616,555')
g = t.data.g:split('149,797')
h = t.data.h:split('373,804')
sys.log(a)
--点击坐标.延迟什么的自己加吧

while(i ~= 0xD5C631)
do
    i = screen.getColor(392,408);

    touch.tapRandom(a[1],a[2]);
    touch.tapRandom(b[1],b[2]);
    touch.tapRandom(c[1],c[2]);
    touch.tapRandom(d[1],d[2]);
    touch.tapRandom(e[1],e[2]);
    touch.tapRandom(f[1],f[2]);
    touch.tapRandom(g[1],g[2]);
    touch.tapRandom(h[1],h[2]);

    x, y = screen.findColor({0xF8DA87}, 90, 265, 316, 267, 318);--正常结束
    if x ~= -1 and y ~= -1 then
        touch.tapRandom(354, 1185, 15, 50, 1);--返回
        sys.sleep(500);
    end

    x, y = screen.findColor({0xE3AD52}, 90, 378, 1147, 380, 1149);--取消转盘
    if x ~= -1 and y ~= -1 then
        touch.tapRandom(355, 1147, 15, 50, 1);
        sys.sleep(500);
        touch.tapRandom(354, 1185, 15, 50, 1);--返回
        sys.sleep(500);
    end

    x, y = screen.findColor({0xF7D798}, 90, 436, 436, 438, 438);--取消宠物和商人
    if x ~= -1 and y ~= -1 then
        touch.tapRandom(515, 818, 15, 50, 1);
        sys.sleep(500);
        touch.tapRandom(354, 1185, 15, 50, 1);--返回
        sys.sleep(500);
    end
end

end

Evan
Evan 认证专家 2022-11-12
function main()
  html = [[
    <!DOCTYPE html>
    <html lang="zh-CN">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
        <!-- 加载UI框架 -->
        <link
          href="file:///var/touchelf/var/res/www/bootstrap/bootstrap.min.css"
          rel="stylesheet"
        />
      </head>
    
      <body>
        <div class="shadow-sm p-3 mb-5 bg-white rounded"
    
          <!-- 单选框 -->
          <div class="form-check form-check-inline">
          <!-- value填写坐标的值 ,只需要修改这里即可-->
            <input class="form-check-input" type="radio" name="inlineRadioOptions" id="a" value="100,100" checked>
            <label class="form-check-label" for="inlineRadio1">坐标a</label>
          </div>
          <div class="form-check form-check-inline">
            <input class="form-check-input" type="radio" name="inlineRadioOptions" id="b" value="100,200">
            <label class="form-check-label" for="inlineRadio2">坐标b</label>
          </div>
          <div class="form-check form-check-inline">
            <input class="form-check-input" type="radio" name="inlineRadioOptions" id="c" value="200,200">
            <label class="form-check-label" for="inlineRadio3">坐标c</label>
          </div>
          <div class="form-check form-check-inline">
            <input class="form-check-input" type="radio" name="inlineRadioOptions" id="d" value="200,300">
            <label class="form-check-label" for="inlineRadio4">坐标d</label>
          </div>
          <!-- 按钮 -->
          <div style="padding-top: 10px">
            <button type="button" class="btn btn-primary" onclick="onOk()">
              确定
            </button>
            <button type="button" class="btn btn-danger" onclick="onCancel()">
              取消
            </button>
          </div>
        </div>
    
        <script>
          // touchelf.return()为触摸内置函数, 此函数将关闭UI, 并将数据发送给sys.ui.show(), 作为其返回值
          function onOk() {
            touchelf.return(
              JSON.stringify({
                type: "ok",
                // 单选框值
                p: document.querySelector("input[type='radio']:checked").value
              })
            );
          }
          function onCancel() {
            touchelf.return(JSON.stringify({ type: "cancel" }));
          }
        </script>
        <!-- 加载框架JS -->
        <!-- IOS路径 -->
        <script
          src="file:///var/touchelf/var/res/www/bootstrap/bootstrap.bundle.min.js">
        </script>
      </body>
    </html>
    
  ]]
  --将html写入文件
  flag,err = file.write("/var/touchelf/input.html",html);
  res = sys.ui.show("/var/touchelf/input.html",100,100,500,500)
  sys.log(res)
  --json转table
  t = codec.json.decode(res)
  point = t.p:split(',')
  sys.log(point)
  touch.tap(point[1],point[2]);
end

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览