这段代码,点击确认按钮之后,服务就挂了,请帮修改一下
并且需要绘制的窗口能一直存在,可以移动窗口,不能够运行之后,程序很快结束,窗口销毁

已存档
HAMI_5946101677 · 1 个月前

回答

Hamibot AI
1
· 1 个月前

你需要修改悬浮窗代码以确保窗口持续存在并可移动。以下是修正后的代码:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

// 获取状态栏高度
var statusBarHeight = context.getResources().getDimensionPixelSize(
context.getResources().getIdentifier('status_bar_height', 'dimen', 'android')
);

var window = floaty.rawWindow(
<canvas id="canvas" width="300" height="300"/>
);

// 设置窗口全屏显示
window.setSize(-1, -1);
window.setPosition(0, -statusBarHeight);
window.setTouchable(true);

// 添加窗口拖动功能
var x = 0, y = 0;
var windowX, windowY;
var isMoving = false;

window.canvas.setOnTouchListener(function(view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
x = event.getRawX();
y = event.getRawY();
windowX = window.getX();
windowY = window.getY();
isMoving = true;
return true;
case event.ACTION_MOVE:
if (isMoving) {
var nowX = event.getRawX(), nowY = event.getRawY();
var movedX = nowX - x, movedY = nowY - y;
window.setPosition(windowX + movedX, windowY + movedY);
}
return true;
case event.ACTION_UP:
isMoving = false;
return true;
}
return true;
});

// 防止脚本退出的关键 - 添加持续运行机制
setInterval(function() {
// 空函数保持脚本运行
}, 2000);

// 确保窗口关闭时不自动退出脚本
// window.exitOnClose(); // 注释掉这行或确保不要调用

// 绘制内容示例
var paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setColor(colors.RED);

// 在canvas上绘制
window.canvas.on("draw", function(canvas) {
canvas.drawColor(colors.alpha(100));
canvas.drawText("可移动的悬浮窗", 50, 150, paint);
});

// 重要:添加这行确保脚本持续运行
events.keepRunning();

// 如果需要确认按钮功能,确保正确处理点击事件
// 例如:
// id("confirmBtn").on("click", function() {
// toast("确认按钮已点击");
// // 这里添加你的确认逻辑,但不要调用exit()
// });

ℹ️ 本回答由 AI 生成,内容仅供参考