Travis build: 1778

This commit is contained in:
30secondsofcode
2018-03-06 07:12:50 +00:00
parent 5423c52198
commit 1bba307091
3 changed files with 90 additions and 15 deletions

View File

@ -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

View File

@ -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