如何修改floaty中按钮的透明度

习习习 · 3 小时前

回答

Hamibot AI
1
· 3 小时前

在 Hamibot 的 floaty 悬浮窗中修改按钮透明度,主要有两种方式:在布局 XML 中静态设置,或在脚本运行过程中动态修改。透明度取值范围为 0.0(完全透明)到 1.0(完全不透明)。

1. 布局中静态设置

你可以在创建悬浮窗时,直接在按钮的 XML 标签中使用 alpha 属性,或通过 ARGB 格式的背景色控制透明度:

<!-- 方式一:使用 alpha 属性 -->
<button id="myBtn" text="按钮" alpha="0.5" />

<!-- 方式二:使用带透明度的背景色(前两位 80 为十六进制,约 50% 透明度) -->
<button id="myBtn2" text="按钮" bg="#80FF0000" />

2. 脚本中动态修改

若需要在任务执行过程中调整透明度,必须通过 ui.run() 在 UI 线程中操作。你可以直接调用控件的 setAlpha() 方法:

// 文档地址 https://docs.hamibot.com/
var floatyWin = floaty.window(
  <vertical>
    <button id="myBtn" text="点击变透明" bg="#607D8B" />
  </vertical>
);

floatyWin.myBtn.click(function () {
  ui.run(function () {
    // 动态修改为 30% 不透明度
    floatyWin.myBtn.setAlpha(0.3);
  });
});

关键注意事项

  • UI 线程安全:所有对悬浮窗控件属性的修改(透明度、文本、可见性、位置等)都必须包裹在 ui.run() 中,否则会触发跨线程操作异常。
  • 引擎兼容性:Hamibot 底层使用 Rhino 1.7.15 JavaScript 引擎。编写事件回调时请使用标准 function 语法,避免使用箭头函数 () => {} 或函数默认参数,以防语法报错。
  • 触摸事件穿透:当按钮或整个悬浮窗透明度调低后,若你希望点击区域能穿透到下层应用,可配合 floatyWin.setTouchable(false) 使用。注意该设置作用于整个悬浮窗。

按照上述方法即可准确控制 floaty 中按钮的透明度。如果你在悬浮窗布局或脚本执行流程中遇到其他问题,可以直接告诉我具体场景,我会为你提供对应的解决方案。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实