1.2.3 • Published 2 years ago

frame-timer-hook v1.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

!WARNING Package no longer supported. Instead use useRequestAnimationFrame React Hook

Frame Timer React Hook

Timer hook with start, stop and pause behaviors as well as minFPS and stopInfo arguments. For animation purposes.

NPM JavaScript Style Guide

Install

npm install --save frame-timer-hook

API

const cb = (data) => {
  const { time, fps, counter, setStart, setStop } = data;
  const { ms, s, m, h, d } = time;
};
const stopValue = 2250;
const stopAfterTime = true;
const clearTimerDelay = 1000;
const stopInfo = [stopValue, stopAfterTime, clearTimerDelay];
const [start, pause, setStart, setStop] = useFrameTimer(cb, minFps, stopInfo);
typeRequiredDescription
cbvoidcallback function
timeobjecttime object
ms, s, m, h, dnumbertime object values
counternumbertimer amount of refreshing
setStartvoidmethod starting or resuming timer loop
setStopvoidmethod stopping timer loop
startbooleancurrent timer start state
pausebooleancurrent timer pause state
minFpsnumberminimum frames per second
stopInfoarraystop info array
stopValuenumberdepends on stopAfterTime takes the value of time in milliseconds or number of refresh counts (returned in counter variable)
stopAfterTimebooleanif stopAfterTime = true timer will stop after miliseconds defined in stopValue. if stopAfterTime = false timer will stop after refresh counts (returned in counter variable) defined in stopValue
clearTimerDelaynumberdelay in milliseconds after which timer will reset

Usage

import React, { useState } from "react";

import { useFrameTimer } from "frame-timer-hook";

const timeDefault = {
  ms: 0,
  s: 0,
  m: 0,
  h: 0,
  d: 0,
};

const Example = () => {
  const [timer, setTimer] = useState(timeDefault);
  const [fps, setFps] = useState(0);
  const [counter, setCounter] = useState(0);
  const [start, pause, setStart, setStop] = useFrameTimer(
    (data) => {
      setTimer(data.time);
      setFps(data.fps);
      setCounter(data.counter);
    },
    60,
    [2150, false, 2500]
  );

  return (
    <div className="App">
      <h1>Frame timer hook</h1>
      <p>
        Frame timer hook with <strong>start</strong>, <strong>stop</strong> and{" "}
        <strong>pause</strong> behaviors
        <br />
        as well as <strong>minFPS</strong> and <strong>stopTime</strong>{" "}
        arguments
      </p>

      <div className="container">
        <h3 className="time">
          {Math.floor(timer.ms)} ms <span className="frames"> | {fps} fps</span>
        </h3>
        <h4 className="timer">
          {timer.d}:{String(timer.h % 24).padStart(2, "0")}:
          {String(timer.m % 60).padStart(2, "0")}:
          {String(timer.s % 60).padStart(2, "0")}:
          {String(timer.ms % 1000).padStart(3, "0")} ms
        </h4>
        <h4 className="refreshing">Refreshing: {counter}</h4>

        <div className="buttons">
          <button onClick={setStart}>{start ? "Pause" : "Start"}</button>
          <button onClick={setStop} disabled={!pause && !start}>
            Stop
          </button>
        </div>
      </div>
    </div>
  );
};

Demo

Try it on CodeSandbox Frame Timer React Hook

License

MIT © ja-klaudiusz

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago