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 位图图像,因为这是悬垂在全高清中的大小。
我认为你的代码没有问题。它应该工作。不过我还有一些建议--
- 检查您的设备是否支持'OpenGL',因为'MaskGroup'与'OpenGL[=29]一起工作=]' 而已。您可以使用 'GetGraphicsPlatform()' 函数 'roDeviceInfo' 来验证这一点。
- 验证“fullsizeFade.bmp”不是 9 补丁图像,因为文档说 MaskGroup 不适用于9 补丁图像。
- 检查添加 'backgroundUri' 到 'Overhang' 节点而不是 'color'。 'MaskGroup' 可能只适用于图像。
希望这会有所帮助。
我接受 swaran 的回答,但在尝试他们的建议时,我发现了一些奇怪的发现,我认为这些发现属于他们自己的回答。
fullsizeFade.bmp
虽然它不是 9 补丁图像(我相信这些图像的扩展名是 .9.bmp
)没有透明度,但它是从白色到黑色的渐变。查看 Roku 文档中的 MaskGroup 示例,他们使用了具有透明度的 png。将我的图像替换为具有透明度的图像有效。
- 当我使用透明图像时,悬垂从给定的颜色(绿色)褪色为黑色,不透明。当改变悬垂以使用
backgroundUri
而不是 color
时,如 swaran 所建议的,悬垂褪色为透明,而不是黑色。 (有问题的背景 uri 只是一个与悬垂大小相同的绿色矩形)。我用其他几个海报和节点(矩形)尝试了这一点,MaskGroup
似乎在给定一个节点时淡化为黑色,但在给定海报 时似乎变透明。
鉴于我想淡化为透明,并且 MaskGroup
仅适用于 OpenGL
,正如 swaran 指出的那样,仅使用具有透明度的背景图像会更有意义。我相信这将永远是更好的解决方案,除非需要淡化为黑色。
所以我试图通过使用位图图像在底部淡出悬垂。不过好像没什么作用?我知道我可以只使用背景图片,但我正在尝试学习如何使用 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 位图图像,因为这是悬垂在全高清中的大小。
我认为你的代码没有问题。它应该工作。不过我还有一些建议--
- 检查您的设备是否支持'OpenGL',因为'MaskGroup'与'OpenGL[=29]一起工作=]' 而已。您可以使用 'GetGraphicsPlatform()' 函数 'roDeviceInfo' 来验证这一点。
- 验证“fullsizeFade.bmp”不是 9 补丁图像,因为文档说 MaskGroup 不适用于9 补丁图像。
- 检查添加 'backgroundUri' 到 'Overhang' 节点而不是 'color'。 'MaskGroup' 可能只适用于图像。
希望这会有所帮助。
我接受 swaran 的回答,但在尝试他们的建议时,我发现了一些奇怪的发现,我认为这些发现属于他们自己的回答。
fullsizeFade.bmp
虽然它不是 9 补丁图像(我相信这些图像的扩展名是.9.bmp
)没有透明度,但它是从白色到黑色的渐变。查看 Roku 文档中的 MaskGroup 示例,他们使用了具有透明度的 png。将我的图像替换为具有透明度的图像有效。- 当我使用透明图像时,悬垂从给定的颜色(绿色)褪色为黑色,不透明。当改变悬垂以使用
backgroundUri
而不是color
时,如 swaran 所建议的,悬垂褪色为透明,而不是黑色。 (有问题的背景 uri 只是一个与悬垂大小相同的绿色矩形)。我用其他几个海报和节点(矩形)尝试了这一点,MaskGroup
似乎在给定一个节点时淡化为黑色,但在给定海报 时似乎变透明。
鉴于我想淡化为透明,并且 MaskGroup
仅适用于 OpenGL
,正如 swaran 指出的那样,仅使用具有透明度的背景图像会更有意义。我相信这将永远是更好的解决方案,除非需要淡化为黑色。