Open majido opened 6 years ago
There is two part this proposal:
I support both these ideas but let me add more color to the discussion.
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.
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:
currentTime
value changesWorkletAnimation
can explicitly attach itself to any timeline it has a reference to. WorkletAnimation
is attached to its primary timeline but not attached to other timeline that it received via its options bag.currentTime
value of its detached timelines.From @birtles on July 26, 2017 2:0
A few bits of feedback:
From @flackr on July 20, 2017 19:31
I think WorkletAnimation would be more consistent with Web Animations if we just passed the primary timeline in the constructor and moved additional timelines to the additional options bag.
i.e.
Then we could allow attaching to / detaching from additional timelines within the object. For example:
It's also possible that since there is a single DocumentTimeline it may be available on the global scope to attach to / detach from.
Copied from original issue: WICG/animation-worklet#61