制作一个可以自主选择控制台展开缩小的代码

已存档
krawfndbai · 1 个月前
第 1 条补充
·
1 个月前

给我制作一个可以运行并操控的案例

回答

Hamibot AI
1
· 1 个月前

以下是一个可切换控制台展开/缩小的脚本示例,基于Hamibot API实现:

// 文档地址 https://docs.hamibot.com/

// 初始状态
let isExpanded = false;
const halfWidth = device.width / 2;
const halfHeight = device.height / 2;

// 创建悬浮窗按钮
ui.layout(
    <vertical padding="10">
        <button id="toggleBtn" text="展开控制台" w="100" h="40"/>
    </vertical>
);

// 按钮点击事件
ui.toggleBtn.click(() => {
    isExpanded = !isExpanded;
    // 调整控制台尺寸
    if (isExpanded) {
        console.setSize(halfWidth, halfHeight);
        console.setPosition(device.width - halfWidth - 10, 50);
        ui.toggleBtn.setText("缩放控制台");
    } else {
        // 缩小到原始大小(示例值)
        console.setSize(300, 200);
        console.setPosition(100, 100);
        ui.toggleBtn.setText("展开控制台");
    }
});

// 初始设置
console.setSize(300, 200);
console.setPosition(100, 100);
console.show();
toast("点击悬浮按钮切换控制台尺寸");

功能说明:

  1. 创建悬浮窗按钮用于切换尺寸
  2. 默认尺寸为300x200像素
  3. 点击按钮切换状态:
    • 展开状态:占屏幕宽度1/2高度1/2
    • 缩小状态:恢复默认尺寸
  4. 控制台位置会自动调整到屏幕右侧
  5. 状态切换时按钮文字同步更新

使用方法:

  1. 确保已开启无障碍服务
  2. 运行脚本后会出现悬浮按钮
  3. 点击按钮即可切换控制台尺寸

注意:该脚本需要 Hamibot Pro 版本支持悬浮窗功能,部分设备可能出现控制台显示异常情况属于已知问题。


补充回答 1

以下是一个完整的自动化案例,包含UI交互、日志记录和设备控制功能:

// 文档地址 https://docs.hamibot.com/

// === 配置区域 ===
const CONFIG = {
    LOG_PATH: "./logs/demo_log.txt",  // 日志路径
    MAX_LOG_SIZE: 1024 * 512,         // 单个日志最大512KB
    INTERVAL: 1000,                   // 操作间隔(毫秒)
    CLICK_RADIUS: 50                  // 点击区域半径
};

// === 初始化模块 ===
(function init() {
    // 创建日志目录
    const LOG_DIR = CONFIG.LOG_PATH.split("/").slice(0, -1).join("/");
    if (!files.exists(LOG_DIR)) files.ensureDir(LOG_DIR);
    
    // 初始化日志配置
    console.setGlobalLogConfig({
        file: CONFIG.LOG_PATH,
        maxFileSize: CONFIG.MAX_LOG_SIZE,
        rootLevel: "ALL"
    });
})();

// === 日志工具 ===
function log(message, type = "INFO") {
    const time = new Date().toLocaleString();
    const entry = `[${time}] ${type} - ${message}\n`;
    files.append(CONFIG.LOG_PATH, entry);
    console.log(entry.trim());
}

// === UI控制 ===
ui.layout(
    <vertical padding="10">
        <text text={"设备型号:" + hamibot.robotName} textSize="16"/>
        <text text={"脚本版本v1.0"} textSize="14" textColor="#666"/>
        <input id="loopInput" hint="输入循环次数(1-10)" inputType="number"/>
        <checkbox id="clickBox" text="启用随机点击"/>
        <checkbox id="swipeBox" text="启用区域滑动"/>
        <button id="startBtn" text="启动脚本" style="Widget.AppCompat.Button.Colored"/>
    </vertical>
);

// === 核心操作 ===
ui.startBtn.click(async () => {
    const loopTimes = parseInt(ui.loopInput.text()) || 3;
    const doClick = ui.clickBox.checked;
    const doSwipe = ui.swipeBox.checked;
    
    log(`开始执行任务,循环次数:${loopTimes}`);
    auto.waitFor();
    
    try {
        for (let i = 1; i <= loopTimes; i++) {
            log(`第${i}轮执行开始`);
            
            if (doClick) {
                const x = Math.random() * device.width;
                const y = Math.random() * device.height;
                gesture(1000, [x, y], [x + 10, y + 10]);
                log(`随机点击坐标:(${x.toFixed(0)}, ${y.toFixed(0)})`);
            }
            
            if (doSwipe) {
                const xStart = device.width/2 - CLICK_RADIUS;
                const yStart = device.height/2 - CLICK_RADIUS;
                gesture(1000, 
                    [xStart, yStart], 
                    [xStart + CLICK_RADIUS*2, yStart + CLICK_RADIUS*2]
                );
                log("执行区域滑动");
            }
            
            await new Promise(resolve => setTimeout(resolve, CONFIG.INTERVAL));
        }
        log("任务执行完成", "SUCCESS");
    } catch (e) {
        log("发生错误:" + e.message, "ERROR");
    }
});

// === 悬浮控制 ===
const floatingBtn = floaty.button("🔧");
floatingBtn.setPosition(device.width - 100, 500);

floatingBtn.click(() => {
    if (console.isVisible()) {
        console.hide();
        log("控制台已隐藏");
    } else {
        console.show();
        log("控制台已显示");
    }
});

// 清理函数
function exit() {
    floatingBtn.close();
    log("脚本已退出", "SYSTEM");
}
hamibot.on("exit", exit);

log("脚本初始化完成,请在UI界面配置参数");
toast("点击右下角🔧切换控制台显示");

功能说明:

  1. 配置管理

    • 日志配置集中管理(路径、大小、间隔)
    • 支持设备适配(自动适配屏幕尺寸)
  2. 完整UI系统

    • 显示设备信息
    • 输入框设置循环次数
    • 复选框控制操作类型
    • 彩色状态按钮
  3. 自动化核心

    • 随机点击生成
    • 区域滑动模拟
    • 异步等待控制
    • 错误捕获处理
  4. 日志系统

    • 本地文件持久化
    • 控制台同步输出
ℹ️ 本回答由 AI 生成,内容仅供参考