vue-tweener

0.1.1 • Public • Published

vue-tweener

Tween Vue's reactive data over time. A Vue wrapper for tween.js.

Install

npm i -g vue-tweener

Plugin into Vue

import Vue from 'vue'
import VueTweener from 'vue-tweener'

Vue.use(VueTweener)

Usage

data() {
  return {
    source: 1,
    test1: 0,
    test2: {a: 1, b: 2},
    test3: 0,
    test4: {a: 1, b: 2}
  }
}

// Declarative syntax:
tween: {
  tweened() { // when this.source changes, refer to this.tweened to get the tweened source
    return {
      watch: 'source', // NOTE: can only watch expression returning single number, not object or others.
      duration: 1000, // 1500 by default
      easing: this.$tween.Easing.Quadratic.InOut, // this.$tween.Easing.Quadratic.Out by default
      rounded: false // true by default, rounded to integer
    }
  }
}

// Imperative syntax:
InSomeMethodsOrHooks() {

  // tween one number to a string output, which is the name of the tweened outcome
  this.$tween({
    start: 1,
    end: 100,
    duration: 2000,
    easing: this.$tween.Easing.Quadratic.Out,
    rounded: true,
    output: 'test1' //this.test1 as the tweened outcome. test1 must be in the data list.
  });

  // tween multiple numbers in an object at the same time
  this.$tween({
    start: {a: 0.1, b: 0.2},
    end: {a: 1, b: -1},
    duration: 1000,
    easing: this.$tween.Easing.Quadratic.InOut,
    rounded: false,
    output: 'test2' //this.test2 as the tweened outcome. test2 must be in the data list.
  });

  // tween one number with callback syntax for post-processing
  this.$tween({
    start: 1,
    end: 100,
    duration: 5000,
    easing: this.$tween.Easing.Quadratic.Out,
    rounded: false,
    output: (value) => this.test3 = value * 2 // test3 must be in the data list.
  });

  // tween multiple numbers in an object at the same time, with callback syntax for post-processing
  this.$tween({
    start: {a: 1, b: 2},
    end: {a: 10, b: -20},
    duration: 2000,
    easing: this.$tween.Easing.Quadratic.InOut,
    rounded: false,
    output: (value) => {
      this.test4.a = this.$tween.toInteger(value.a)
      this.test4.b = Number(value.b.toFixed(0)) // test4 must be in the data list.
    }
  });
}

Injected Globals

this.$tween.Easing: equivalent to TWEEN.Easing;

this.$tween.toInteger(): use this when you don't set rouned: true but still want integers.

/vue-tweener/

    Package Sidebar

    Install

    npm i vue-tweener

    Weekly Downloads

    9

    Version

    0.1.1

    License

    MIT

    Last publish

    Collaborators

    • beeplin