Travis build: 1778
This commit is contained in:
49
README.md
49
README.md
@ -209,6 +209,7 @@ average(1, 2, 3);
|
|||||||
* [`off`](#off)
|
* [`off`](#off)
|
||||||
* [`on`](#on)
|
* [`on`](#on)
|
||||||
* [`onUserInputChange`](#onuserinputchange-)
|
* [`onUserInputChange`](#onuserinputchange-)
|
||||||
|
* [`recordAnimationFrames`](#recordanimationframes)
|
||||||
* [`redirect`](#redirect)
|
* [`redirect`](#redirect)
|
||||||
* [`runAsync`](#runasync-)
|
* [`runAsync`](#runasync-)
|
||||||
* [`scrollToTop`](#scrolltotop)
|
* [`scrollToTop`](#scrolltotop)
|
||||||
@ -3444,6 +3445,54 @@ onUserInputChange(type => {
|
|||||||
<br>[⬆ Back to top](#table-of-contents)
|
<br>[⬆ Back to top](#table-of-contents)
|
||||||
|
|
||||||
|
|
||||||
|
### recordAnimationFrames
|
||||||
|
|
||||||
|
Invokes the provided callback on each animation frame.
|
||||||
|
|
||||||
|
Use recursion.
|
||||||
|
Provided that `running` is `true`, continue invoking `window.requestAnimationFrame()` which invokes the provided callback.
|
||||||
|
Return an object with two methods `start` and `stop` to allow manual control of the recording.
|
||||||
|
Omit the second argument, `autoStart`, to implicitly call `start` when the function is invoked.
|
||||||
|
|
||||||
|
```js
|
||||||
|
const recordAnimationFrames = (callback, autoStart = true) => {
|
||||||
|
let running = true,
|
||||||
|
raf;
|
||||||
|
const stop = () => {
|
||||||
|
running = false;
|
||||||
|
cancelAnimationFrame(raf);
|
||||||
|
};
|
||||||
|
const start = () => {
|
||||||
|
running = true;
|
||||||
|
run();
|
||||||
|
};
|
||||||
|
const run = () => {
|
||||||
|
raf = requestAnimationFrame(() => {
|
||||||
|
callback();
|
||||||
|
if (running) run();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
if (autoStart) start();
|
||||||
|
return { start, stop };
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Examples</summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
const cb = () => console.log('Animation frame fired');
|
||||||
|
const recorder = recordAnimationFrames(cb); // logs 'Animation frame fired' on each animation frame
|
||||||
|
recorder.stop(); // stops logging
|
||||||
|
recorder.start(); // starts again
|
||||||
|
const recorder2 = recordAnimationFrames(cb, false); // `start` needs to be explicitly called to begin recording frames
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<br>[⬆ Back to top](#table-of-contents)
|
||||||
|
|
||||||
|
|
||||||
### redirect
|
### redirect
|
||||||
|
|
||||||
Redirects to a specified URL.
|
Redirects to a specified URL.
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -9,24 +9,25 @@ Omit the second argument, `autoStart`, to implicitly call `start` when the funct
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
const recordAnimationFrames = (callback, autoStart = true) => {
|
const recordAnimationFrames = (callback, autoStart = true) => {
|
||||||
let running = true, raf
|
let running = true,
|
||||||
|
raf;
|
||||||
const stop = () => {
|
const stop = () => {
|
||||||
running = false
|
running = false;
|
||||||
cancelAnimationFrame(raf)
|
cancelAnimationFrame(raf);
|
||||||
}
|
};
|
||||||
const start = () => {
|
const start = () => {
|
||||||
running = true
|
running = true;
|
||||||
run()
|
run();
|
||||||
}
|
};
|
||||||
const run = () => {
|
const run = () => {
|
||||||
raf = requestAnimationFrame(() => {
|
raf = requestAnimationFrame(() => {
|
||||||
callback()
|
callback();
|
||||||
if (running) run()
|
if (running) run();
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
if (autoStart) start()
|
if (autoStart) start();
|
||||||
return { start, stop }
|
return { start, stop };
|
||||||
}
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
|||||||
Reference in New Issue
Block a user