rive-app / rive-app/rive-android

Nested Animation Triggers Fail After Completion

Open
#376 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

triage
Dominant language
Kotlin
Stars
538
Forks
66
PR merge metrics
No merged PRs in 30d

Description

<-- Thanks for using Rive!

If something isn't working like you expected, please:

If you think you found a bug or if you can't find what you're looking for
in our docs, fill out the template below.

-->

Description

<-- A clear and concise description of what the problem is. -->

I've created an artboard where animations start with a trigger, and I've also made another artboard that nests several of these. On Android, I'm firing the triggers of these nested artboards using fireStateAtPath.

The animations play continuously as long as I keep firing the triggers before one animation finishes. However, if I fire the trigger after an animation has completed, it doesn't play.

Is this an incorrect StateMachine setup, or is this kind of use case not intended?

I've prepared a minimal project here to demonstrate this behavior. Could you please take a look?

Provide a Repro

<--
Please provide the most minimal repro you can:

  • If the problem is small enough, paste a code snippet
  • Otherwise, you can attach a ZIP archive or paste a link to a GitHub repository with the app bundle
    that is reproducing the issue

-->
https://github.com/ttymsd/rive-sample-report

Source .riv/.rev file

https://github.com/ttymsd/rive-sample-report/blob/main/app/src/main/res/raw/untitled.riv

<--
Attaching runtime-exported .riv file that reproduces the issue is immensely helpful for our team
to identify the problem as fast as possible and fix it.
Please also include the source (.rev)
by downloading a backup from the Editor.

N.B. Because GitHub only supports certain file types use a ZIP archive to upload .riv/.rev files
to this issue.

You can also privately share the .riv/.rev file with us at hello@rive.app.
-->

Expected behavior

<-- A clear and concise description of what you expected to happen. -->

Users will trigger animations by tapping a button. On the artboard, several nested artboards are placed at various coordinates, and I'm controlling which artboard's trigger fires via my Kotlin implementation.

I want the animation to progress from 1st to 2nd to 3rd, and then if the button is tapped again after a short delay, I want it to start from the 4th animation. However, if there's a delay, the 4th animation doesn't play. If I keep tapping continuously, animations from the 4th onward will play.

Screenshots

<-- If applicable, add screenshots to help explain your problem. -->

Image
Image

Device & Versions (please complete the following information)
  • Device: Pixel7Pro
  • SDK Level : 35

I haven't tested this on other devices.

Additional context

<-- Add any other context about the problem here. -->

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked minimal project, especially app/src/main/res/raw/untitled.riv, and reproduce the delayed trigger behavior on the reported Android setup. Trace the Kotlin fireStateAtPath usage and compare triggers fired continuously with those fired after completion. Done means the fourth animation plays when its trigger is fired after a delay.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.