我正在开发一个自定义窗口视频播放器。我想要的功能是在播放器缓冲视频时在视频播放器顶部(或代替)显示正在加载的图像,并在播放器开始播放视频时删除正在加载的图像。
但问题是,一旦现在加载图像被绘制在屏幕上,当播放器开始播放视频时,它就不会消失。
这是我用来绘制画布的代码:
function draw_canvas()
m.canvas.AllowUpdates(false)
m.canvas.Clear()
m.canvas.SetLayer(0, m.canvasLayers.background)
if m.isLoadingVideo = true
m.canvas.SetLayer(1, [m.canvasLayers.frameImage, m.canvasLayers.nowLoadingImage])
else if m.isLoadingVideo = false
m.canvas.SetLayer(1, [m.canvasLayers.frameImage])
end if
m.canvas.AllowUpdates(true)
end function
下面是在事件循环中调用此draw_canvas函数的代码:
if type(msg) = "roVideoPlayerEvent"
if msg.GetMessage() = "start of play"
m.isLoadingVideo = false
m.drawCanvas()
else if msg.GetMessage() = "startup progress"
if m.isLoadingVideo <> true
m.isLoadingVideo = true
m.drawCanvas()
end if
end if
end if
roVideoPlayer在应用程序启动时开始工作,并且位于与现在加载图像相同的坐标。
这是我的控制器函数中的代码:
m.drawCanvas()
m.videoPlayer.Play()
return m.eventLoop()
我无法在代码中找到错误,所以如果有人可以帮助我???
发现问题了! 问题出在我的背景层中,我没有在背景层中将合成模式设置为"源"。 这样做之后问题就消失了....
irInStoreScreen.canvasLayers.background = {
Color: "#00000000",
targetRect: {
x: 0,
y: 0,
w: irInStoreScreen.screenRect.w,
h: irInStoreScreen.screenRect.h
},
compositionMode: "Source"
}