回答
你提到的“市值”应该是“设置”。在 Hamibot 中,设置悬浮窗是否允许拖动(调整位置),主要取决于你创建的悬浮窗类型以及是否启用了调整功能。
1. 使用 floaty.window() 创建悬浮窗
floaty.window() 创建的悬浮窗默认自带关闭、调整大小和调整位置的按键。你可以通过 setAdjustEnabled() 方法来控制这些按键的显示与隐藏,从而决定是否允许用户手动拖动悬浮窗。
- 启用拖动:调用
window.setAdjustEnabled(true) - 禁用拖动:调用
window.setAdjustEnabled(false)
2. 使用 floaty.rawWindow() 创建悬浮窗
floaty.rawWindow() 创建的是原始悬浮窗,不包含任何额外设施(如调整位置、大小的按钮)。因此,它不支持通过内置控件进行拖动。如果你需要使用原始悬浮窗,只能通过代码调用 setPosition() 来改变位置。
代码示例
以下示例展示了如何创建悬浮窗并控制其拖动功能:
// 文档地址 https://docs.hamibot.com/
// 创建一个基础悬浮窗
var w = floaty.window(
<frame gravity="center" bg="#FF0000" w="200" h="100">
<text id="text" textColor="#ffffff" gravity="center">悬浮窗测试</text>
</frame>
);
// 启用调整功能(允许拖动和调整大小)
w.setAdjustEnabled(true);
// 设置初始位置
w.setPosition(100, 100);
// 5 秒后禁用调整功能(不可拖动)
setTimeout(function () {
ui.run(function () {
w.setAdjustEnabled(false);
w.text.setText("已锁定位置");
});
}, 5000);
// 10 秒后关闭悬浮窗
setTimeout(function () {
w.close();
}, 10000);
注意事项
- UI 线程操作:对悬浮窗控件内容的修改(如
setText)需要在 UI 线程中执行,请使用ui.run()包裹相关代码。 - 兼容性:脚本运行环境基于 Rhino 1.7.15,编写代码时请避免使用箭头函数(
=>)和函数默认参数。 - 权限:使用悬浮窗功能需要确保 Hamibot 拥有“显示悬浮窗”或“无障碍服务”等相关权限,具体取决于设备系统版本。
如果你需要完全自定义触摸交互或实现特殊的拖动逻辑,建议使用 floaty.rawWindow() 并结合触摸事件监听自行实现,但这需要更复杂的代码处理。
ℹ️ 本回答由 AI 生成,内容仅供参考