Merge pull request #616 from Chalarangelo/recordFrames

Create recordAnimationFrames.md
This commit is contained in:
Angelos Chalaris
2018-03-06 09:10:23 +02:00
committed by GitHub
2 changed files with 39 additions and 0 deletions

View File

@ -0,0 +1,38 @@
### 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 }
}
```
```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
```

View File

@ -206,6 +206,7 @@ randomIntegerInRange:math,utility,random
randomNumberInRange:math,utility,random randomNumberInRange:math,utility,random
readFileLines:node,array,string readFileLines:node,array,string
rearg:adapter,function rearg:adapter,function
recordAnimationFrames:browser,utility
redirect:browser,url redirect:browser,url
reducedFilter:array reducedFilter:array
reduceSuccessive:array,function reduceSuccessive:array,function