MaskGroup 可以与 Poster 以外的节点一起使用吗?

Can MaskGroup be used with nodes other than Poster?

所以我试图通过使用位图图像在底部淡出悬垂。不过好像没什么作用?我知道我可以只使用背景图片,但我正在尝试学习如何使用 MaskGroup。

我的代码如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<component name="AppScene" extends="Scene" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
  <interface>
  </interface>
    <script type="text/brightscript" uri="pkg:/components/AppScene.brs"/>
  <children>
    <MaskGroup id="mask" maskUri="pkg:/images/fullsizeFade.bmp">
      <Overhang id="overhang" title="helloWorld" color="#70C835FF" />
    </MaskGroup>
    <PanelSet id="panelSet" >
      <MainListPanel id="list"/>
    </PanelSet>
  </children>
</component>

fullsizeFade.bmp 是 1080x115 位图图像,因为这是悬垂在全高清中的大小。

我认为你的代码没有问题。它应该工作。不过我还有一些建议--

  1. 检查您的设备是否支持'OpenGL',因为'MaskGroup'与'OpenGL[=29]一起工作=]' 而已。您可以使用 'GetGraphicsPlatform()' 函数 'roDeviceInfo' 来验证这一点。
  2. 验证“fullsizeFade.bmp”不是 9 补丁图像,因为文档说 MaskGroup 不适用于9 补丁图像。
  3. 检查添加 'backgroundUri''Overhang' 节点而不是 'color''MaskGroup' 可能只适用于图像。

希望这会有所帮助。

我接受 swaran 的回答,但在尝试他们的建议时,我发现了一些奇怪的发现,我认为这些发现属于他们自己的回答。

  1. fullsizeFade.bmp 虽然它不是 9 补丁图像(我相信这些图像的扩展名是 .9.bmp)没有透明度,但它是从白色到黑色的渐变。查看 Roku 文档中的 MaskGroup 示例,他们使用了具有透明度的 png。将我的图像替换为具有透明度的图像有效。
  2. 当我使用透明图像时,悬垂从给定的颜色(绿色)褪色为黑色,不透明。当改变悬垂以使用 backgroundUri 而不是 color 时,如 swaran 所建议的,悬垂褪色为透明,而不是黑色。 (有问题的背景 uri 只是一个与悬垂大小相同的绿色矩形)。我用其他几个海报和节点(矩形)尝试了这一点,MaskGroup 似乎在给定一个节点时淡化为黑色,但在给定海报 时似乎变透明。

鉴于我想淡化为透明,并且 MaskGroup 仅适用于 OpenGL,正如 swaran 指出的那样,仅使用具有透明度的背景图像会更有意义。我相信这将永远是更好的解决方案,除非需要淡化为黑色。