如何设置控制台悬浮窗的大小
var window = floaty.window(
<frame gravity="center" bg="#77ff0000">
<text id="text">悬浮文字</text>
</frame>
);
// 设置悬浮窗宽度为300,高度为200
window.setSize(30成品0, 200);
这个代码无法实现设置悬浮窗大小
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 出现这个错误怎么处理
回答
要设置悬浮窗的大小,你需要使用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);
如果仍然无法设置大小,请检查:
- 你使用的是
floaty.window()创建的悬浮窗,它支持setSize()方法 - 代码中没有其他地方重新设置了悬浮窗大小
- 你没有在调用
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。
常见原因及解决方法:
-
sleep()函数参数问题(最常见)
- 从知识库可知,
sleep(n)需要一个Number类型的毫秒数参数 - 如果你这样写:
sleep(someVariable),而someVariable是NaN,就会报这个错 - 检查你的脚本中所有调用sleep()的地方,确保参数是有效的数字
- 从知识库可知,
-
排查步骤:
// 在调用sleep前添加检查 let delay = 计算出的延迟时间; if (isNaN(delay) || typeof delay !== 'number') { console.error("延迟时间无效,设置为默认值5000"); delay = 5000; // 设置安全默认值 } sleep(delay); -
查找NaN来源:
- 检查所有数学运算(特别是除法、parseInt转换等)
- 检查从UI获取的文本转换为数字的过程
- 添加调试日志定位问题:
console.log("延迟值:", delay, "类型:", typeof delay); if (isNaN(delay)) { console.error("延迟值是NaN!"); } -
常见导致NaN的情况:
parseInt("abc")返回NaN- 数字操作中有非数字参与(如
"100ms" * 10) - 变量未初始化就用于计算
在你的zfb_feizhu脚本中,重点检查第101行附近的代码,特别是所有需要数字参数的地方(如sleep、click、swipe等函数的参数)。确保所有用于数学运算和时间参数的变量都经过有效性验证。
如果问题仍然存在,可以在可能导致问题的代码段前后添加console.log输出相关变量的值和类型,这样能更准确地定位NaN的来源。