Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
philotas
Level 9

call component function only possible via interface?

When a component defines some function via <source> tag or inline. How can I call a function of the script in the context of the component?

Seems I can only do that by changing an interface fiel and register an onChange callback, correct?
0 Kudos
3 REPLIES 3
philotas
Level 9

Re: call component function only possible via interface?

anybody?
0 Kudos
RokuJoel
Roku Employee
Roku Employee

Re: call component function only possible via interface?

I think you mean the <script> tag, and you should be able to call any of the functions in an included .brs file in your init, and while an observed field is, I think, necessary to initially call a function within an included file, I believe that called function should be able to call anything else within files included via the script tag. So if your onChange callback is a function named "DoSomething" -

function DoSomething()
print "something"
doSomethingElse()
end function

function DoSomethingElse() as integer
print "something else"
return -1
end function


Joel
0 Kudos
philotas
Level 9

Re: call component function only possible via interface?

Hi Joel,
thanks for your answer, but that was not, what I meant:

Let's take this example script of a Vd


<Video
id="musicvideos"
width="1280"
height="720"
translation="[0,0]"
/>

<script type="text/brightscript" >
<![CDATA[

sub init()
m.top.setFocus(true)
setVideo()
end sub

function setVideo() as void
videoContent = createObject("RoSGNode", "ContentNode")
videoContent.url = "https://roku.s.cpl.delvenetworks.com/media/59021fabe3b645968e382ac726cd6c7b/60b4a471ffb74809beb2f7d5a15b3193/roku_ep_111_segment_1_final-cc_mix_033015-a7ec8a288c4bcec001c118181c668de321108861.m3u8"
videoContent.title = "Test Video"
videoContent.streamformat = "hls"

m.video = m.top.findNode("musicvideos")
m.video.content = videoContent
m.video.control = "play"
end function

]]>
</script>



My question is, whether I can call setVideo() from somewhere else then the init() or an onChange-Callback which changes, when the intefacefield changes.

So instead of this:

node.myInterfaceField = {url: ....} ' // trigger setVideo


do this:


node.setVideo({url: ....}) ' //


I am probably talking about having "interface functions".
at the moment it seams I have to have interface fields in order to trigger functions..
0 Kudos