我有一个简单的亮点roku应用程序。我只想在启动画面后播放全屏图像,然后在我的全屏图像之前显示一个奇怪的全屏黑色和灰色背景。
我可以使用roImageCanvas
显示全屏图像,但我不想使用该黑客。我需要使用一个组件。
这是显示我所看到的quick video。
这是我的main.brs
:
sub Main()
' THIS does NOT cause flicker
' background = {
' Color: "#000000"
' }
' loadingImage = {
' Url: "pkg:/images/main-background.png"
' TargetRect: {
' x: 0,
' y: 0,
' w: 1280,
' h: 720
' }
' }
' loadingText = {
' Text: "Loading...",
' TextAttrs: {
' Font: "Large",
' VAlign: "Top"
' },
' TargetRect: {
' x: loadingImage.TargetRect.x,
' y: loadingImage.TargetRect.y + 25,
' w: loadingImage.TargetRect.w,
' h: 30
' }
' }
' canvas = CreateObject( "roImageCanvas" )
' canvas.SetLayer( 0, [ background, loadingImage, loadingText ] )
' canvas.Show()
showChannelSGScreen()
' canvas.Hide()
end sub
sub showChannelSGScreen()
screen = CreateObject("roSGScreen")
m.port = CreateObject("roMessagePort")
screen.setMessagePort(m.port)
scene = screen.CreateScene("ZORenderablesExample")
screen.show()
while(true)
msg = wait(0, m.port)
msgType = type(msg)
if msgType = "roSGScreenEvent"
if msg.isScreenClosed() then return
end if
end while
end sub
我的组件:
<?xml version = "1.0" encoding = "utf-8" ?>
<!--********** Copyright 2016 Roku Corp. All Rights Reserved. **********-->
<component name = "ZORenderablesExample" extends = "Scene" >
<script type = "text/brightscript" >
<![CDATA[
sub init()
end sub
]]>
</script>
<children>
<Poster
id="mainBackground"
translation="[0, 0]"
uri="pkg:/images/main-background.png"
width="1280"
height="720"
visible="true">
<Label
id = "loading"
translation = "[ 0, 244 ]"
width = "1280"
height = "720"
font = "font:SmallBoldSystemFont"
text = "Loading..."
horizAlign = "center"
vertAlign = "center"
visible = "true" />
</Poster>
<!-- Overhang logo -->
<Poster
translation="[79, 36]"
uri="pkg:/images/header-logo.png"
width="156"
height="49"
visible="true" />
</children>
</component>
我制作了一个github repo,您可以在其中获取我的完整代码
如何防止闪烁?有没有一种方法可以保持启动画面,直到组件和全屏图像完成渲染?
FWIW我正在使用最新的roku棒(4核)
答案 0 :(得分:2)
从Roku OS v7.6开始,他们引入了一个Manifest条目来解决这个问题: 在清单文件中创建一个条目,如“splash_rsg_optimization = 1”。
这是在SceneGraph频道的频道启动期间删除闪屏和初始屏幕之间的闪烁。
答案 1 :(得分:1)
使用场景图XML时,没有办法摆脱强硬期间的闪烁。
完整背景可在this Roku forum thread
找到Roku需要一个更好的场景图解决方案,因为每个人都遇到同样的问题。允许保持直至渲染下方的场景是一种解决方案。
答案 2 :(得分:0)
您在此处看到的灰色背景是场景本身。当海报被加载时它变得可见。要隐藏它,您可以添加黑色背景。尝试将其作为场景中的第一个孩子。
<Rectangle
width="1280"
height="720"
color="0x000000"/>