回答
以下是基于 Hamibot 的 floaty 模块创建的悬浮球脚本。脚本包含启动、暂停、退出按钮,一个显示运行时长的文本区域,以及一个日志显示区域。代码兼容 Hamibot 的 Rhino 1.7.15 引擎,避免使用箭头函数和默认参数。
// 文档地址:https://docs.hamibot.com/
auto.waitFor(); // 确保自动化环境准备就绪
// 全局变量:记录运行状态和时间
var startTime = null;
var isRunning = false;
var elapsedTime = 0; // 累计运行时间(毫秒)
// 创建悬浮窗
var floatyWin = floaty.window(
<vertical>
<text id="timeText" text="运行时长: 0s" />
<text id="logText" text="日志: " />
<button id="startBtn" text="启动" />
<button id="pauseBtn" text="暂停" />
<button id="exitBtn" text="退出" />
</vertical>
);
// 启动按钮点击事件
function handleStart() {
if (!isRunning) {
startTime = Date.now();
isRunning = true;
addLog("脚本启动");
}
}
// 暂停按钮点击事件
function handlePause() {
if (isRunning) {
elapsedTime += Date.now() - startTime;
isRunning = false;
addLog("脚本暂停");
}
}
// 退出按钮点击事件
function handleExit() {
addLog("退出脚本");
floatyWin.close();
hamibot.exit();
}
// 添加日志到悬浮窗
function addLog(message) {
var currentLog = floatyWin.logText.getText();
// 简单添加新日志行,限制为最近10行以避免过长
var lines = currentLog.split("\n");
if (lines.length > 10) {
lines.shift(); // 移除最旧的行
}
lines.push(message);
floatyWin.logText.setText(lines.join("\n"));
}
// 更新运行时长显示
function updateTime() {
var totalTime = elapsedTime;
if (isRunning) {
totalTime += Date.now() - startTime;
}
var seconds = Math.floor(totalTime / 1000);
floatyWin.timeText.setText("运行时长: " + seconds + "s");
}
// 绑定按钮点击事件
floatyWin.startBtn.click(handleStart);
floatyWin.pauseBtn.click(handlePause);
floatyWin.exitBtn.click(handleExit);
// 保持悬浮窗不被关闭:使用空的 setInterval
setInterval(function() {}, 1000);
// 每秒更新运行时长显示
setInterval(updateTime, 1000);
// 初始日志
addLog("悬浮球脚本已初始化");
使用说明:
- 启动:点击“启动”按钮开始计时和运行脚本(你需要自行添加具体任务逻辑)。
- 暂停:点击“暂停”按钮暂停计时和任务。
- 退出:点击“退出”按钮关闭悬浮窗并结束脚本。
- 运行时长:实时显示在顶部文本中。
- 日志:在文本区域显示操作日志,自动限制为最近10行。
自定义建议:
- 如果你需要执行具体自动化任务,在
handleStart函数中添加你的代码(例如使用hamibot的自动化函数)。 - 日志显示可能会因文本过长而影响布局,你可以调整
addLog函数中的行数限制或添加滚动功能(但 Hamibot 的 UI 组件功能有限)。
直接复制粘贴到 Hamibot 编辑器运行即可。如果有其他问题,欢迎追问!
ℹ️ 本回答由 AI 生成,内容仅供参考