UNPKG

lesca-object-tweener

Version:

Simply tween object values.

103 lines (81 loc) 3.83 kB
[![React](https://img.shields.io/badge/-ReactJs-61DAFB?style=for-the-badge&logo=react&logoColor=white)](https://zh-hant.reactjs.org/) [![React](https://img.shields.io/badge/Less-1d365d?style=for-the-badge&logo=less&logoColor=white)](https://lesscss.org/) [![React](https://img.shields.io/badge/Typescript-4277c0?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![React](https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge&logo=html5&logoColor=white)](https://www.w3schools.com/html/) [![React](https://img.shields.io/badge/-CSS3-1572B6?style=for-the-badge&logo=css3&logoColor=white)](https://www.w3schools.com/css/) [![NPM](https://img.shields.io/badge/NPM-ba443f?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/) [![React](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/en/) [![NPM](https://img.shields.io/badge/DEV-Jameshsu1125-9cf?style=for-the-badge)](https://www.npmjs.com/~jameshsu1125) # Why use it? tween object value. #### [Live Demo](https://jameshsu1125.github.io/lesca-object-tweener/) # Installation ```sh npm install lesca-object-tweener --save ``` ## Usage ```javascript import Tweener, { Bezier } from 'lesca-object-tweener'; // use single tween const tweener = new Tweener({ from: { top: 0, left: 0 }, to: { top: 500, left: 500 }, duration: 1000, delay: 1000, easing: Bezier.linear, onUpdate: (e) => console.log(e), // {top:0~500, left:0~500} onComplete: (e) => console.log(e), // { top: 500, left: 500 } }).play(); tweener .add({ to: { top: 1000 }, duration: 1000, delay: 1000, easing: Bezier.easeInOutQuint, onStart: () => alert('start'), onUpdate: (e) => console.log(e), // {top:0~1000, left:500} onComplete: (e) => console.log(e), // {top:1000, left:500} }) .play(); ``` ```javascript // use multiple tween const tweener = new Tweener(); [ { top: 0, left: 0 }, { top: 100, left: 100 }, ].forEach((data) => { tweener.add({ from: { top: 0 }, // first loop will add "from". Second time tweener will ignore "from" to: { top: 100 }, duration: 0, easing: Bezier.easeInOutQuint, onUpdate: (e) => console.log(e), // { top:0~100 } onComplete: (e) => console.log(e), // { top:100 } }); }); tweener.play(); // Need to run play when new constructor without any params ``` ## Development ### Methods | Methods | options | description | default | | :------------------------------------- | :-----: | :---------------: | ------: | | **new Tweener**( **params**:_object_ ) | params | new Tweener class | | | .**add**(**params**:_object_) | params | tween object | | | .**stop**() | | stop tween | | ### Properties | Properties | type | description | default | | :-------------------- | :------: | :-------------------: | -----------: | | params.**from** | object | object value = number | | | params.**to** | object | object value = number | | | params.**duration** | number | tween duration | 1000 | | params.**delay** | number | tween delay | 0 | | params.**easing** | array | cubic-bezier 4 values | easeOutQuart | | params.**onUpdate** | function | call by frame | void | | params.**onComplete** | function | call when end | void | | params.**onStart** | function | call when start | void | ### Features - maintain if necessary # references [css-cubic-bezier-generator](https://www.cssportal.com/css-cubic-bezier-generator/) [bezier-easing](https://www.npmjs.com/package/bezier-easing)