The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Controlling Animations

Methods

‘Lottie’ offers several methods for controlling various aspects of animations, and ‘shinyLottie’ provides options for calling these methods when initialising the animation or updating them at a later point. The table below documents the most common methods:

Method lottie_animation() argument ‘shinyLottie’ Function
Loop loop lottie_setLoop()
Autoplay autoplay lottie_play(), lottie_pause(), and lottie_stop()
Speed speed lottie_setSpeed()
Direction direction lottie_setDirection()
Play Segments playSegments lottie_playSegments(), lottie_goToAndStop(), and lottie_goToAndPlay()
Set Subframe Rendering setSubFrame lottie_setSubFrame()
Destroy N/A lottie_destroy()

To demonstrate this, the example below initialises an animation using lottie_animation() with a speed value of 2, causing the animation to play twice as fast as normal. We can then use a reactive event, triggered by clicking the button, to update the speed to a value of 0.5 (causing it to play twice as slow as normal) using lottie_setSpeed().

library(shiny)
library(shinyLottie)

ui <- fluidPage(
  include_lottie(),
  lottie_animation(
    path = "shinyLottie/example.json",
    name = "my_animation",
    speed = 2
  ),
  actionButton("updateSpeed", "Set Speed to 0.5")
)

server <- function(input, output, session) {
  observeEvent(input$updateSpeed, {
    lottie_setSpeed(speed = 0.5, name = "my_animation")
  })
}

shinyApp(ui, server)

Note that when calling lottie_setSpeed(), we reference the name of the animation we wish to target (in this case, "my_animation"). This is consistent across virtually all ‘shinyLottie’ functions, allowing for fine control over the animations in your ‘shiny’ app (i.e. being able to update the speed of a single animation, rather than all animations). Alternatively, the default default name value of "all" can be used to target all animations in the app.

Finally, if you want to call a ‘Lottie’ method for which ‘shinyLottie’ does not provide a function for, this can be achieved using lottie_callMethod().

Properties

‘Lottie’ animations have a number of properties that can be queried during runtime. The example below demonstrates how to query the ‘playCount’ property of an animation using lottie_getProperty().

library(shiny)
library(shinyLottie)

ui <- fluidPage(
  include_lottie(),
  lottie_animation(
    path = "shinyLottie/example.json",
    name = "my_animation"
  ),
  actionButton("getProperty", "Update Play Count"),
  textOutput("playCountOutput")
)

server <- function(input, output, session) {
  observeEvent(input$getProperty, {
    lottie_getProperty(name = "my_animation", property = "playCount")
  })

  observe({
    req(input$playCount)
    output$playCountOutput <- renderText({
      paste("Play Count:", input$playCount)
    })
  })
}

 shinyApp(ui, server)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.