明亮脚本中的 active 和 setFocus() 有什么区别?

What is the difference between active and setFocus() in bright script?

我是 Roku 世界的新手,我正在编写两个文本框。 TextEditbox1 active = true 显示光标和按下键,另一个 texteditbox2 active = true 隐藏 texteditbox1 然后显示 Texteditbox2 光标。问题是。我使用 setFocus() 而不是 active 对两个按钮执行的类似操作。它工作得很好。但是我尝试使用 Active 属性通过两个文本框来维护向下键和向上键。有可能吗?

我试过下面的东西。

TextEditBox1  active = true cursor is displayed

TextEditBox2 active = true cursor is displayed and TextEditBox1 cursor is hidden

我用双按钮进行同样的操作,它运行成功。

Button1 setfocus true focus is available

Button2 setfocus true focus is available and Button1 setfocus is hidden

这很愚蠢但是:

  • active 仅显示 TextEditBox 中闪烁的光标

    当 TextEditBox 处理 keyPress 事件 时,
  • setFocus() 给它真正的焦点

在我看来,正确使用它的唯一方法是通过设置 active=true 来模仿专注于该组件,但没有真正给予它,因为它会阻止所有关键事件。您可以制作一个包装器组件,它接收焦点然后设置 active=true 而不将其向下传递。并且(例如)当用户按下 'OK' 按钮时,此类组件将显示 KeyboardDialog。

更新:

clearOnDownKey="false" 可能会让您免于这种痛苦