Я создал задачу и запустил ее (чтобы получить подробности видео), когда пользователь нажимает кнопку просмотра на активе видео. Я могу запустить задачу и получить информацию о воспроизведении с сервера. После получения информации об игре мне нужно запускать таймер каждые 30 секунд, и после его запуска мне нужно запустить еще одну задачу, чтобы обновить тактовый сигнал на сервере. После получения ответа на сердцебиение мне нужно обновить одно поле сведений о воспроизведении значением ответа на сердцебиение. Несмотря на то, что я изменил значение поля с помощью addReplace (), значение не изменяется.
scene.brs
sub playLive()
m.livePlaybackData = CreateObject("roSGNode", "FetchPlaybackDetails")
m.livePlaybackNode.observeField("playbackDetails", "didReceivePlaybackDetails")
m.livePlaybackNode.control = "RUN"
end sub
sub didReceivePlaybackDetails()
videoContent = createObject("RoSGNode", "ContentNode")
videoContent.url = m.livePlaybackNode.playbackDetails.pUrl
videoContent.title = "Test Video"
videoContent.streamformat = "dash"
m.video.content = videoContent
m.video.visible = true
m.video.setFocus(true)
m.video.control = "play"
m.video.observeField("state", "OnVideoPlayerStateChange")
m.playbackHeartbeatTimer.control = "start"
m.playbackHeartbeatTimer.ObserveField("fire","updateHeartbeat")
end sub
sub updateHeartbeat()
m.heartbeatNode.setField("liveStreamToken", m.livePlaybackNode.playbackDetails.streamToken)
m.heartbeatNode.observeField("heartbeatContent", "didReceiveHeartbeatContent")
m.heartbeatNode.control = "RUN"
end sub
sub didReceiveHeartbeatContent()
m.livePlaybackNode.playbackDetails.AddReplace("streamToken", m.heartbeatNode.heartbeatContent.streamToken)
?m.livePlaybackNode.playbackDetails.streamToken
end sub
В didReceiveHeartbeatContent () я пытаюсь изменить значение streamToken в PlayDetails с помощью streamToken из heartbeatContent. Но значение не меняется.
translationDetails и heartbeatContent - это roAssociativeArrays, которые я определил в файлах XML и установил значения, как показано ниже.
<?xml version="1.0" encoding="utf-8" ?>
<component name = "FetchPlaybackDetails" extends = "Task" >
<interface>
<field id="playbackDetails" type="assocarray" />
</interface>
</component>
<?xml version="1.0" encoding="utf-8" ?>
<component name = "UpdateHeartbeat" extends = "Task" >
<interface>
<field id="liveStreamToken" type="string" />
<field id="heartbeatContent" type="assocarray" />
</interface>
</component>
Может ли кто-нибудь подсказать, пожалуйста, как изменить значение поля в воспроизведении деталей?