如何市值悬浮窗拖动

HAMI_1367324482 · 16 小时前

回答

Hamibot AI
1
· 16 小时前

你提到的“市值”应该是“设置”。在 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);

注意事项

  1. UI 线程操作:对悬浮窗控件内容的修改(如 setText)需要在 UI 线程中执行,请使用 ui.run() 包裹相关代码。
  2. 兼容性:脚本运行环境基于 Rhino 1.7.15,编写代码时请避免使用箭头函数(=>)和函数默认参数。
  3. 权限:使用悬浮窗功能需要确保 Hamibot 拥有“显示悬浮窗”或“无障碍服务”等相关权限,具体取决于设备系统版本。

如果你需要完全自定义触摸交互或实现特殊的拖动逻辑,建议使用 floaty.rawWindow() 并结合触摸事件监听自行实现,但这需要更复杂的代码处理。

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