Vanilla Hooks for Tween.js
npm install @use-tween/vanillaA simple binding of the @tweenjs/tween.js library for vanilla JavaScript, can be also used with frontend frameworks like React, Vue, Angular, etc.
``bash`
yarn add @use-tween/vanilla
`js`
const { useTween } = require('@use-tween/vanilla')
If you are using ESM or TypeScript, you can import it like this:
`js`
import { useTween } from '@use-tween/vanilla'
Then you can use the useTween function to create a tween instance:
`ts
const { tween, update } = useTween(
{ x: 0 },
{
to: [{ x: 100 }, 1000],
easing: 'Linear.None',
onUpdate: (object) => {
console.log(object.x)
},
onComplete: () => {
console.log('Tween completed!')
}
},
)
const animate = () => {
requestAnimationFrame(animate)
update()
}
animate()
`
The tween instance would start immediately after it is created.
If you want to start the tween later, you can set the startImmediately option to false,start
and then call the method on the tween instance manually:
`ts
const { tween, update } = useTween(
{ x: 0 },
{
to: [{ x: 100 }, 1000],
startImmediately: false,
},
)
const animate = () => {
requestAnimationFrame(animate)
update()
}
tween.start()
animate()
`
The useTween function creates a tween instance.
- initialObject: The initial object that you want to tween.options
- : The options for the tween instance.
Basically the options object wraps most of the methods and properties of the Tween, they would become an array if there are multiple arguments.
Also we convert the Easing functions to strings, so you can use them directly in the options object without tackling the Easing object from Tween.JS.
For example, in Tween.JS you would write:
`ts`
const tween = new TWEEN.Tween({ x: 0 })
.to({ x: 100 }, 1000)
.easing(TWEEN.Easing.Linear.None)
.onUpdate((object) => {
console.log(object.x)
})
But in @use-tween/vanilla you can write:
`tsto
const { tween } = useTween(
{ x: 0 },
{
to: [{ x: 100 }, 1000], // becomes an array since there are multiple arguments.easing
easing: 'Linear.None', // Use strings for rather than import them from Tween.JSonUpdate
onUpdate: (object) => { // takes a function as the argument.``
console.log(object.x)
},
},
)
This project is licensed under the MIT License.