Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
dreamer2057
Channel Surfer

Dynamic animation

Can I work with animation dynamically?

those code from xml can be moved into brightscript?

<ParallelAnimation   id = "ShowMenu" > <!--** ParallelAnimation   id = "testParallelAnimation"   repeat = "true" **-->
<Animation id = "testPosterAnimation" duration = "1" easeFunction = "linear" >
<Vector2DFieldInterpolator key= "[0, 1]" keyValue= "[ [640, 1000], [640, 620] ]" fieldToInterp="menuBar.translation" />
<FloatFieldInterpolator key= "[0, 1]" keyValue= "[ 0.2, 1]" fieldToInterp="menuBar.opacity" />
</Animation>
<Animation id = "testPosterBckgAnimation" duration = "1" easeFunction = "linear" >
<Vector2DFieldInterpolator key= "[0, 1]" keyValue= "[ [0, 870], [0, 490] ]" fieldToInterp="testPosterBckg.translation" />
<FloatFieldInterpolator key= "[0, 1]" keyValue= "[ 0.2, 1 ]" fieldToInterp="testPosterBckg.opacity" />
</Animation>
<Animation id = "testPosterSelectAnimation" duration = "1" easeFunction = "linear" >
<Vector2DFieldInterpolator key= "[0, 1]" keyValue= "[ [230, 910], [230, 530] ]" fieldToInterp="testPosterSelect.translation" />
<FloatFieldInterpolator key= "[0, 1]" keyValue= "[ 0.2, 1 ]" fieldToInterp="testPosterSelect.opacity" />
</Animation>
</ParallelAnimation>
Sincerely, Sergey Shoshin, software developer.
0 Kudos
7 REPLIES 7
lumpenprole
Channel Surfer

Re: Dynamic animation

So, I'm curious about this too. It seems like trying to set fieldToInterp in code fails. Can we get an example of this?
0 Kudos
jaxim
Visitor

Re: Dynamic animation

I am just encountering this. Was there ever a resolution to this? Can we dynamically modify the "fieldToInterp" field?
0 Kudos
lumpenprole
Channel Surfer

Re: Dynamic animation

I've never found a solution. I set a bunch of stripped down animations in the xml, and modify what I can in the code. 
0 Kudos
jaxim
Visitor

Re: Dynamic animation

actually, I found a solution that works for me.
It works when I set the fieldToInterp in the code. I am animating a screen. Here is my code...

screenAnimationInterp.fieldToInterp = screen.id + ".opacity"
screenAnimation.control = "start"
0 Kudos
ajitg_4557
Channel Surfer

Re: Dynamic animation

   i, jaxim
   can you share some part of the code snippet, where you write code for screen animation and also how you find screen id?
    :shock:  :idea:
thanks in advance.
0 Kudos
squirreltown
Roku Guru

Re: Dynamic animation

I don't use XML at all. All animations can be done in Brightscript .
Init:
m.mainannie = m.top.createChild("ParallelAnimation")        
m.mainannie.id="ThisAnnie"
m.mainannie.repeat = false


m.nodez.clr[i]=m.mainannie.CreateChild("Animation")
m.nodez.clr[i].id="color_"+i.toStr()
 m.nodez.clrcha[i]=m.nodez.clr[i].CreateChild("ColorFieldInterpolator")
 m.nodez.clrcha[i].id="colorcha_"+i.toStr()
 m.nodez.clrcha[i].fieldToInterp= "player_"+i.toStr()+".blendcolor"
 etc.....
                                     

m.mainannie.control = "start"
Kinetics Screensavers
0 Kudos
coopdaddyswag
Binge Watcher

Re: Dynamic animation

"squirreltown" wrote:
I don't use XML at all. All animations can be done in Brightscript .
Init:
m.mainannie = m.top.createChild("ParallelAnimation")        
m.mainannie.id="ThisAnnie"
m.mainannie.repeat = false


m.nodez.clr[i]=m.mainannie.CreateChild("Animation")
m.nodez.clr[i].id="color_"+i.toStr()
 m.nodez.clrcha[i]=m.nodez.clr[i].CreateChild("ColorFieldInterpolator")
 m.nodez.clrcha[i].id="colorcha_"+i.toStr()
 m.nodez.clrcha[i].fieldToInterp= "player_"+i.toStr()+".blendcolor"
 etc.....
                                     

m.mainannie.control = "start"


Can confirm that this works. I was creating separate objects, then using `#appendChild` to construct the node tree. However, that was not working properly. Instead I decided to use `#createChild`. Here is a code sample:
function _createAnimation(objToAnimate as Object) as Object
 animation = createObject("roSGNode", "Animation")
 animation.id = Substitute("{0}{1}", objToAnimate.id, "Animation")
 animation.delay = 1
 animation.duration = 5
 animation.easeFunction = "linear"

 floatField = animation.createChild("FloatFieldInterpolator")
 floatField.key = [0.0, 0.125, 0.250, 0.375, 0.5, 0.625, 0.750, 0.875, 1.0]
 floatField.keyValue = [0.0, 0.25, 0.5, 0.75, 1.0, 0.75, 0.5, 0.25, 0.0]
 floatField.fieldToInterp = "ticker.opacity"

 return animation
end function
0 Kudos
Need Assistance?
Welcome to the Roku Community! Feel free to search our Community for answers or post your question to get help.

Become a Roku Streaming Expert!

Share your expertise, help fellow streamers, and unlock exclusive rewards as part of the Roku Community. Learn more.