我正在开发一个Roku频道应用。我在将样式应用于场景图Video
节点的字幕时遇到了问题。
如果我通过系统的“设置”屏幕全局设置字幕样式,则字幕会在我的全屏,聚焦的场景图Video
节点上显示风格(背景颜色,文本颜色,文本边缘效果,它们都可以作为但是,我无法通过我的频道应用程序上的代码复制此内容。
据我所知,Scene Graph Video
节点的captionStyle
属性仅在固件版本8.0之后可用。我的Roku设备有这么精确的版本,我测试过的第二个更新的Roku设备也是如此。
这是我的BrightScript代码(我添加了固件版本检查,以便能够判断if
语句的正分支是否执行):
m.video.globalCaptionMode = "On"
m.video.subtitleTrack = params.subtitlesUrl
print "Caption Style before our customizations: "; FormatJson(m.video.captionStyle) ' Prints null
firmwareVersion = GetFirmwareVersion()
if firmwareVersion >= 8 then
captionStyle = {
"Background Color": "Yellow"
}
m.video.captionStyle = captionStyle
print "Subtitles Style set on Video node: "; FormatJson(m.video.captionStyle) ' Prints the assoc array as expected
else
print "Caption Style not supported on firmware version: "; firmwareVersion
end if
请注意,在应用自定义项之前,包含print
的第一个m.video.captionStyle
语句会打印null
。我希望它至少显示当前的全局系统设置(如果该属性用于读取而不仅仅是写入,就像某些属性一样。)我的猜测是captionStyle
属性不属于{直接{1}}节点,但我无法在官方Roku SDK文档或其他地方找到任何示例(包括此站点。)
第二个猜测是,Video
关联数组中的键可能不应指定为字符串值(此关联数组文字样式也是新的,但BrightScript Eclipse插件不会抱怨,也不会在实际执行期间Roku本身。)也就是说,而不是:
captionStyle
该条目可能必须设置为:
captionStyle = {
"Background Color": "Yellow"
}
但它也不起作用。通过阅读captionStyle = {
backgroundColor: "Yellow"
}
属性(https://sdkdocs.roku.com/display/sdkdoc/Video)的Roku SDK文档,我希望它实际上被指定为字符串(包括空格)。
有什么想法吗?感谢。