如何设置控制台悬浮窗的大小

已存档
wrekemdkwh · 22 天前
第 1 条补充
·
22 天前

var window = floaty.window(
<frame gravity="center" bg="#77ff0000">
<text id="text">悬浮文字</text>
</frame>
);

// 设置悬浮窗宽度为300,高度为200
window.setSize(30成品0, 200);

这个代码无法实现设置悬浮窗大小

第 2 条补充
·
20 天前

22:44:45.366/E: 无法将 NaN 转换为 java.lang.Long. (file:///android_asset/modules/globals.js#15)
无法将 NaN 转换为 java.lang.Long.
at file:///android_asset/modules/globals.js:15:0
at zfb_feizhu (6953d5bab3e4a88f3850aa2c.js:101:0)
at 6953d5bab3e4a88f3850aa2c.js:126:0 出现这个错误怎么处理

回答

Hamibot AI
1
· 22 天前

要设置悬浮窗的大小,你需要使用setSize()方法。这个方法接收两个参数:宽度和高度。

基本用法:

// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">悬浮文字</text>
   </frame>
);

// 设置悬浮窗宽度为300,高度为200
window.setSize(30成品0, 200);

特殊值说明:

  • 设置为-1:占满全屏
  • 设置为-2:根据悬浮窗内容大小自动调整

全屏示例:

// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">全屏悬浮窗</text>
   </frame>
);

// 设置为全屏
window.setSize(-1, -1);

自动调整大小示例:

// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">自动调整大小的悬浮窗</text>
   </frame>
);

// 根据内容自动调整大小
window.setSize(-2, -2);

请注意,脚本停止运行时悬浮窗会自动关闭。如果要保持悬浮窗显示,需要添加一个空的setInterval:

// 文档地址 https://docs.hamibot.com/
setInterval(function() {}, 1000);

另外,你可以使用setAdjustEnabled()方法控制是否显示调整大小和位置的控制点:

// 显示调整控制点
window.setAdjustEnabled(true);
// 隐藏调整控制点
window.setAdjustEnabled(false);

补充回答 1

你提供的代码中有一个错误:window.setSize(30成品0, 200); 中的 30成品0 不是一个有效的数值。这是我的失误,应该是 300

正确的代码应该是:

// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">悬浮文字</text>
   </frame>
);

// 设置悬浮窗宽度为300,高度为200
window.setSize(300, 200);

// 防止脚本退出导致悬浮窗关闭
setInterval(function() {}, 1000);

如果你需要确认设置是否生效,可以添加日志输出:

// 文档地址 https://docs.hamibot.com/
var window = floaty.window(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">悬浮文字</text>
   </frame>
);

// 设置悬浮窗大小
window.setSize(300, 200);

// 验证设置结果
console.log("当前宽度: " + window.getWidth() + ", 高度: " + window.getHeight());

// 保持脚本运行
setInterval(function() {}, 1000);

如果仍然无法设置大小,请检查:

  1. 你使用的是 floaty.window() 创建的悬浮窗,它支持 setSize() 方法
  2. 代码中没有其他地方重新设置了悬浮窗大小
  3. 你没有在调用 setSize() 后立即调用 setSize(-2, -2)(自动调整大小会覆盖之前的尺寸设置)

对于原始悬浮窗(使用 floaty.rawWindow() 创建的),设置大小的方法是一样的:

// 文档地址 https://docs.hamibot.com/
var window = floaty.rawWindow(
   <frame gravity="center" bg="#77ff0000">
     <text id="text">原始悬浮窗</text>
   </frame>
);

window.setSize(300, 200);
setInterval(function() {}, 1000);

补充回答 2

这个错误表示你的脚本尝试将NaN(非数字值)转换为Java的Long类型,这在Hamibot中是不允许的。根据错误堆栈,问题出在zfb_feizhu脚本的第101行,调用了需要数字参数的函数但传入了NaN。

常见原因及解决方法:

  1. sleep()函数参数问题(最常见)

    • 从知识库可知,sleep(n)需要一个Number类型的毫秒数参数
    • 如果你这样写:sleep(someVariable),而someVariable是NaN,就会报这个错
    • 检查你的脚本中所有调用sleep()的地方,确保参数是有效的数字
  2. 排查步骤

    // 在调用sleep前添加检查
    let delay = 计算出的延迟时间;
    if (isNaN(delay) || typeof delay !== 'number') {
        console.error("延迟时间无效,设置为默认值5000");
        delay = 5000; // 设置安全默认值
    }
    sleep(delay);
    
  3. 查找NaN来源

    • 检查所有数学运算(特别是除法、parseInt转换等)
    • 检查从UI获取的文本转换为数字的过程
    • 添加调试日志定位问题:
    console.log("延迟值:", delay, "类型:", typeof delay);
    if (isNaN(delay)) {
        console.error("延迟值是NaN!");
    }
    
  4. 常见导致NaN的情况

    • parseInt("abc") 返回NaN
    • 数字操作中有非数字参与(如"100ms" * 10
    • 变量未初始化就用于计算

在你的zfb_feizhu脚本中,重点检查第101行附近的代码,特别是所有需要数字参数的地方(如sleep、click、swipe等函数的参数)。确保所有用于数学运算和时间参数的变量都经过有效性验证。

如果问题仍然存在,可以在可能导致问题的代码段前后添加console.log输出相关变量的值和类型,这样能更准确地定位NaN的来源。

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