YYPOST群发软件 发表于 2026-5-20 06:50:06

苹果脚本里HID的5种滑动方法的使用

苹果脚本里HID的5种滑动方法的使用




// AIWROK苹果系统滑动功能综合测试案例
// 🍎交流QQ群711841924群一,苹果内测群,528816639
// 本文件演示所有HID滑动方法的使用

function sleep(ms) {
    var start = new Date().getTime();
    while (new Date().getTime() - start < ms) {
    }
}

function main() {
    printl("========== AIWROK苹果系统滑动功能综合测试 ==========\n");
   
    // 获取屏幕尺寸
    var screenWidth = device.width || 750;
    var screenHeight = device.height || 1334;
    printl("屏幕尺寸: " + screenWidth + "x" + screenHeight);
    printl("");

    demoBasicSwipeMethods();         // 示例1: 基础滑动方法
    demoDirectionalSwipes();         // 示例2: 方向性滑动
    demoPercentSwipes();               // 示例3: 百分比坐标滑动
    demoAdvancedSwipes();            // 示例4: 高级滑动技巧
    demoPracticalSwipeScenarios();   // 示例5: 实用滑动场景
   
    printl("\n========== 所有滑动测试执行完毕 ==========");
}

// ========== 示例1: 基础滑动方法 ==========
function demoBasicSwipeMethods() {
    printl("【示例1】基础滑动方法 hid.swip()");
    printl("说明:使用hid.swip()在任意两点间滑动\n");

    try {
      printl("方式1: 垂直向下滑动(从顶部到底部)");
      // 参数: x1, y1, x2, y2, press, swipTime, delayUp
      hid.swip(375, 200, 375, 1100, 50, 800, 100);
      printl("✓ 垂直向下滑动完成");
      sleep(500);

      printl("方式2: 垂直向上滑动(从底部到顶部)");
      hid.swip(375, 1100, 375, 200, 50, 800, 100);
      printl("✓ 垂直向上滑动完成");
      sleep(500);

      printl("方式3: 水平向右滑动");
      hid.swip(100, 600, 650, 600, 50, 600, 100);
      printl("✓ 水平向右滑动完成");
      sleep(500);

      printl("方式4: 水平向左滑动");
      hid.swip(650, 600, 100, 600, 50, 600, 100);
      printl("✓ 水平向左滑动完成");
      sleep(500);

      printl("方式5: 对角线滑动(左上到右下)");
      hid.swip(100, 200, 650, 1100, 50, 1000, 100);
      printl("✓ 对角线滑动完成");
      sleep(500);

    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例2: 方向性滑动 ==========
function demoDirectionalSwipes() {
    printl("【示例2】方向性滑动方法");
    printl("说明:使用专门的横向/纵向滑动方法\n");

    try {
      printl("方式1: 横向滑动 hid.swipH()");
      // 参数: x1, y, x2, press, swipTime, delayUp
      hid.swipH(100, 600, 650, 50, 600, 100);
      printl("✓ 横向滑动完成(从左到右)");
      sleep(500);

      printl("方式2: 反向横向滑动");
      hid.swipH(650, 600, 100, 50, 600, 100);
      printl("✓ 横向滑动完成(从右到左)");
      sleep(500);

      printl("方式3: 纵向滑动 hid.swipV()");
      // 参数: x, y1, y2, press, swipTime, delayUp
      hid.swipV(375, 200, 1100, 50, 800, 100);
      printl("✓ 纵向滑动完成(从上到下)");
      sleep(500);

      printl("方式4: 反向纵向滑动");
      hid.swipV(375, 1100, 200, 50, 800, 100);
      printl("✓ 纵向滑动完成(从下到上)");
      sleep(500);

    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例3: 百分比坐标滑动 ==========
function demoPercentSwipes() {
    printl("【示例3】百分比坐标滑动方法");
    printl("说明:使用百分比坐标进行滑动,适配不同屏幕尺寸\n");

    try {
      printl("方式1: 百分比横向滑动 hid.swipHPercent()");
      // 参数: x1Percent, yPercent, x2Percent, press, swipTime, delayUp
      hid.swipHPercent(0.1, 0.5, 0.9, 50, 600, 100);
      printl("✓ 百分比横向滑动完成(10%到90%)");
      sleep(500);

      printl("方式2: 反向百分比横向滑动");
      hid.swipHPercent(0.9, 0.5, 0.1, 50, 600, 100);
      printl("✓ 百分比横向滑动完成(90%到10%)");
      sleep(500);

      printl("方式3: 百分比纵向滑动 hid.swipVPercent()");
      // 参数: xPercent, y1Percent, y2Percent, press, swipTime, delayUp
      hid.swipVPercent(0.5, 0.15, 0.85, 50, 800, 100);
      printl("✓ 百分比纵向滑动完成(15%到85%)");
      sleep(500);

      printl("方式4: 反向百分比纵向滑动");
      hid.swipVPercent(0.5, 0.85, 0.15, 50, 800, 100);
      printl("✓ 百分比纵向滑动完成(85%到15%)");
      sleep(500);

      printl("方式5: 短距离百分比滑动");
      hid.swipVPercent(0.5, 0.4, 0.6, 50, 400, 50);
      printl("✓ 短距离百分比滑动完成(小幅滚动)");
      sleep(500);

    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例4: 高级滑动技巧 ==========
function demoAdvancedSwipes() {
    printl("【示例4】高级滑动技巧");
    printl("说明:组合多种参数实现复杂的滑动效果\n");

    try {
      printl("方式1: 快速滑动(短时间)");
      hid.swipVPercent(0.5, 0.2, 0.8, 30, 300, 50);
      printl("✓ 快速滑动完成(300ms)");
      sleep(400);

      printl("方式2: 慢速平滑滑动(长时间)");
      hid.swipVPercent(0.5, 0.2, 0.8, 80, 1500, 150);
      printl("✓ 慢速滑动完成(1500ms)");
      sleep(500);

      printl("方式3: 带按压延迟的滑动");
      hid.swipVPercent(0.5, 0.2, 0.8, 200, 800, 200);
      printl("✓ 带按压延迟的滑动完成");
      sleep(500);

      printl("方式4: 连续滑动演示(3次)");
      for (var i = 0; i < 3; i++) {
            printl("第" + (i+1) + "次滑动...");
            hid.swipVPercent(0.5, 0.3, 0.7, 50, 600, 100);
            sleep(300);
      }
      printl("✓ 连续滑动演示完成");
      sleep(500);

      printl("方式5: Z字形滑动路径");
      // 第一段:右上
      hid.swip(200, 800, 550, 500, 50, 500, 50);
      sleep(200);
      // 第二段:右下
      hid.swip(550, 500, 200, 900, 50, 500, 50);
      sleep(200);
      // 第三段:右上
      hid.swip(200, 900, 550, 400, 50, 500, 50);
      printl("✓ Z字形滑动完成");
      sleep(500);

    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 示例5: 实用滑动场景 ==========
function demoPracticalSwipeScenarios() {
    printl("【示例5】实用滑动场景");
    printl("说明:模拟实际应用中的滑动操作(全部使用非阻塞方式)\n");

    try {
      printl("场景1: 列表滚动演示(上滑3次)");
      for (var i = 0; i < 3; i++) {
            printl("第" + (i+1) + "次上滑...");
            // 使用非阻塞方式:moveToRealPoint + mouseDown + mouseUp
            hid.moveToRealPoint(375, 934);// 底部位置 (70%)
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(375, 400);// 顶部位置 (30%)
            sleep(300);
            hid.mouseUp();
            sleep(400);
      }
      printl("✓ 列表滚动演示完成");
      sleep(400);

      printl("场景2: 图片轮播(左右滑动)");
      try {
            // 切换到下一张 - 右滑
            printl("右滑切换到下一张...");
            hid.moveToRealPoint(600, 667);
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(150, 667);
            sleep(300);
            hid.mouseUp();
            sleep(300);
            printl("✓ 右滑完成");
            
            // 切换到上一张 - 左滑
            printl("左滑切换到上一张...");
            hid.moveToRealPoint(150, 667);
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(600, 667);
            sleep(300);
            hid.mouseUp();
            sleep(300);
            printl("✓ 左滑完成");
            
            printl("✓ 图片轮播演示完成");
      } catch (e) {
            printl("✗ 图片轮播出错: " + e);
      }

      printl("场景3: 下拉刷新");
      try {
            printl("执行下拉刷新动作...");
            // 从顶部向下拉 - 非阻塞方式
            hid.moveToRealPoint(375, 133);   // 顶部 (10%)
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(375, 534);   // 中间偏上 (40%)
            sleep(400);
            hid.mouseUp();
            sleep(300);
            printl("✓ 下拉刷新演示完成");
      } catch (e) {
            printl("✗ 下拉刷新出错: " + e);
      }

      printl("场景4: 侧边栏滑出");
      try {
            // 从左侧向右滑 - 打开侧边栏
            printl("右滑打开侧边栏...");
            hid.moveToRealPoint(37, 667);
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(375, 667);
            sleep(300);
            hid.mouseUp();
            sleep(300);
            printl("✓ 侧边栏已打开");
            
            // 关闭侧边栏
            printl("左滑关闭侧边栏...");
            hid.moveToRealPoint(375, 667);
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(37, 667);
            sleep(300);
            hid.mouseUp();
            sleep(300);
            printl("✓ 侧边栏操作演示完成");
      } catch (e) {
            printl("✗ 侧边栏操作出错: " + e);
      }

      printl("场景5: 页面切换(边缘滑动)");
      try {
            // 从右边缘向左滑(返回上一页)
            printl("边缘左滑返回上一页...");
            hid.moveToRealPoint(712, 667);
            sleep(50);
            hid.mouseDown();
            sleep(50);
            hid.moveToRealPoint(75, 667);
            sleep(300);
            hid.mouseUp();
            sleep(300);
            printl("✓ 页面切换演示完成");
      } catch (e) {
            printl(" 页面切换出错: " + e);
      }

      printl("场景6: 小幅度精确调整演示(5次微调)");
      try {
            for (var i = 0; i < 5; i++) {
                printl("第" + (i+1) + "次微调...");
                hid.moveToRealPoint(375, 640);// 48% 位置
                sleep(50);
                hid.mouseDown();
                sleep(50);
                hid.moveToRealPoint(375, 694);// 52% 位置
                sleep(200);
                hid.mouseUp();
                sleep(200);
            }
            printl("✓ 精确调整演示完成");
      } catch (e) {
            printl("✗ 精确调整出错: " + e);
      }
      sleep(500);

    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

// ========== 辅助函数 ==========

/**
* 安全的滑动函数,包含错误处理
*/
function safeSwipe(x1, y1, x2, y2, description) {
    try {
      printl("执行滑动: " + description);
      hid.swip(x1, y1, x2, y2, 50, 600, 100);
      printl("✓ 滑动成功");
      return true;
    } catch (e) {
      printl("✗ 滑动失败: " + e.message);
      return false;
    }
}

/**
* 批量执行滑动操作
*/
function batchSwipe(swipeOperations) {
    printl("批量执行 " + swipeOperations.length + " 个滑动操作");
    var successCount = 0;
   
    for (var i = 0; i < swipeOperations.length; i++) {
      var op = swipeOperations;
      printl("执行第 " + (i+1) + " 个操作: " + op.name);
      
      try {
            if (op.type === 'swip') {
                hid.swip(op.x1, op.y1, op.x2, op.y2, op.press || 50, op.time || 600, op.delay || 100);
            } else if (op.type === 'swipH') {
                hid.swipH(op.x1, op.y, op.x2, op.press || 50, op.time || 600, op.delay || 100);
            } else if (op.type === 'swipV') {
                hid.swipV(op.x, op.y1, op.y2, op.press || 50, op.time || 600, op.delay || 100);
            } else if (op.type === 'swipHPercent') {
                hid.swipHPercent(op.x1, op.y, op.x2, op.press || 50, op.time || 600, op.delay || 100);
            } else if (op.type === 'swipVPercent') {
                hid.swipVPercent(op.x, op.y1, op.y2, op.press || 50, op.time || 600, op.delay || 100);
            }
            
            successCount++;
            printl("✓ 操作成功");
      } catch (e) {
            printl("✗ 操作失败: " + e.message);
      }
      
      if (i < swipeOperations.length - 1) {
            sleep(800);
      }
    }
   
    printl("批量操作完成,成功: " + successCount + "/" + swipeOperations.length);
    return successCount === swipeOperations.length;
}

/**
* 坐标转换工具
*/
function toPercent(x, y) {
    var screenWidth = device.width || 750;
    var screenHeight = device.height || 1334;
    return {
      x: x / screenWidth,
      y: y / screenHeight
    };
}

// 执行主函数
main();

页: [1]
查看完整版本: 苹果脚本里HID的5种滑动方法的使用