W3C home > Mailing lists > Public > public-css-archive@w3.org > January 2021

[csswg-drafts] Web Animations Proposal: Add `Animation.started` and `Animation.playing` promises (#5871)

From: Kevin Brewster via GitHub <sysbot+gh@w3.org>
Date: Wed, 13 Jan 2021 20:19:39 +0000
To: public-css-archive@w3.org
Message-ID: <issues.opened-785413461-1610569177-sysbot+gh@w3.org>
kevinbrewster has just created a new issue for https://github.com/w3c/csswg-drafts:

== Web Animations Proposal: Add `Animation.started` and `Animation.playing` promises ==
# Problem

1. If you manually construct an `Animation` to be played at a later time, there's no way to know when it actually **playing**. 
2. If the animation has a `delay`, there's no way to know when the animation effect actually **starts**.

```javascript
let animation = new Animation(new KeyframeEffect(element, { opacity: 1 }, { delay: 1000, duration: 2000 }));

animation.ready.then(_ => {
    console.log("animation is ready"); // this is logged immediately
});
window.setTimeout(_ => {
	animation.play()
}, 1500);

// When will animation play?
// When will the delay period end?
```

# Proposal

Introduce two new promises on `Animation`:

1. `Animation.playing`: returns a `Promise` which resolves once the animation has started playing.
2. `Animation.started`: returns a `Promise` which resolves once the `delay` period is over and the effect has started

```javascript
let animation = new Animation(new KeyframeEffect(element, { opacity: 1 }, { delay: 1000, duration: 2000 }));

animation.ready.then(_ => {
    console.log("animation is ready"); // @ time = 0
});
animation.playing.then(_ => {
    console.log("animation is playing"); // @ time = 1500
});
animation.started.then(_ => {
    console.log("animation effect started"); // @ time = 2500
});
animation.finished.then(_ => {
    console.log("animation effect started"); // @ time = 4500
});

window.setTimeout(_ => {
	animation.play()
}, 1500);


```


# Alternatives

1. `Animation.played` instead of `Animation.playing` for consistency in tense with `Animation.finished`
2. `Animation.effectStarted` instead of `Animation.started` for clarification

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/5871 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 13 January 2021 20:19:40 UTC

This archive was generated by hypermail 2.4.0 : Tuesday, 5 July 2022 06:42:25 UTC