Coder Social home page Coder Social logo

Comments (3)

majido avatar majido commented on May 10, 2024

There is two part this proposal:

  1. Make one timeline a primary timeline.
  2. Allow animation to explicitly attach/detach to timelines.

I support both these ideas but let me add more color to the discussion.

A Primary Timeline

The main benefit here is that it will make integration with Web Animation much simpler. For example it is now clear what is the time value that will be used in the animation events i.e., event timeline time.

Explicit Timeline Attach/Detach

Our previous design was passing multiple timelines to the animation. An issue with that design is that the animation needed to be updated anytime any of its timelines has changed. However, this is inefficient in many common usecases. Take for example the โ€œhidy barโ€ effect where the animation initially tracks the scroll offset (via ScrollTimeline) but as soon as the finger is lifted it continues the animated effect by tracking time (via DocumentTimeline). So in the first phase the animation needs to only be responsive to scroll offset changes and in seconds phase it needs to be responsive to both scroll offset and time. So in this case, if we had both timelines at the beginning then we would need to call animate function every frame even if there was no scrolling in that frame!

The explicit attach/detach idea help solve this issue. In particular, the animation will get all its needed timelines (primary, and those in options bag) during its construction. Then it can attach/detach to them as needed and its update rate is determined by its attached timelines.

So here is the proposal in more concrete terms:

  • Attaching an animation to a timeline means that it will be updated if the timeline currentTime value changes
  • WorkletAnimation can explicitly attach itself to any timeline it has a reference to.
  • On initialization, a WorkletAnimation is attached to its primary timeline but not attached to other timeline that it received via its options bag.
  • The animation may still read the currentTime value of its detached timelines.

from animation-worklet.

birtles avatar birtles commented on May 10, 2024

A few bits of feedback:

  • I feel a little bit uneasy about the primary timeline idea, because:
    • Blessing one particular timeline feels a little odd. Is there somewhere else in the platform where we have this concept (so we can at least align terminology etc.)?
    • It seems odd that you pass different classes of timelines using very different means (regular argument vs property bag).
    • Can you change your primary timeline over time? e.g. if your hidey bar animation goes past the scroll threshold and becomes a timed animation, semantically it feels like your primary timeline has changed. If you can change the primary timeline, then using such different means to pass the different types of timelines seems all the more odd.
  • I suspect we might find some good ideas in WPF and event .NET since they deal with hierarchies of timelines, I believe.
  • The idea of attaching/detaching makes sense though. (We might call it listening?)

from animation-worklet.

majido avatar majido commented on May 10, 2024

This issue was moved to w3c/css-houdini-drafts#810

from animation-worklet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.