JSPM

  • Created
  • Published
  • Downloads 2024854
  • Score
    100M100P100Q189824F
  • License MIT

A Unity-inspired render loop for JavaScript

Package Exports

  • framesync

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (framesync) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Framesync

A tiny frame scheduler for performantly batching reads and renders.

Segregating actions that read and write to the DOM will avoid layout thrashing.

Install

npm install framesync --save

Usage

The Framesync render loop executes four sequential steps, once per frame.

  • frameStart
  • frameUpdate
  • frameRender
  • frameEnd

Developers can set any function to run at any of these steps using the on and cancel callbacks:

  • onFrameStart, cancelOnFrameStart
  • onFrameUpdate, cancelOnFrameUpdate
  • onFrameRender, cancelOnFrameRender
  • onFrameEnd, cancelOnFrameEnd

Framesync also exports some time-measurement methods:

  • currentTime: The current time as measured by the host platform's most accurate now function.
  • currentFrameTime: The time the current requestAnimationFrame was initiated.
  • timeSinceLastFrame: The duration between the previous frame and the current currentFrameTime

Example

import {
  timeSinceLastFrame,
  onFrameStart,
  cancelFrameStart
} from 'framesync';

function logTimeSinceLastFrame() {
  console.log(timeSinceLastFrame());
  onFrameStart(logTimeSinceLastFrame);
}

onFrameStart(logTimeSinceLastFrame);

function stopLogging() {
  cancelOnFrameStart(logTimeSinceLastFrame);
}

setTimeout(stopLogging, 5000);