tween.js--使用/教程/实例

原文网址:tween.js--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍JavaScript的动画库twween.js的用法。

        Vue 的过渡系统提供了非常多简单的方法设置进入、离开和列表的动画效果。

        那么对于数据元素本身的动效呢?包括数字和运算、颜色的显示、SVG 节点的位置、元素的大小和其他的属性等。所有的原始数字都被事先存储起来,可以直接转换到数字。做到这一步,我们就可以结合 Vue 的响应式和组件系统,使用第三方库来实现切换元素的过渡状态

官网

[翻译] tween.js 中文使用指南    //对应的英文指南

Vue+tween.js

1.安装tween.js

在工程目录下执行:
npm install @tweenjs/tween.js        //这是新版,老版是:npm install tween.js

2. 导入

<script>
import Tween from "@tweenjs/tween.js"
export default {
  // xxx
}
</script>

实例(输入数字,显示渐变效果)

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import CompA from "@/components/CompA";

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/compA',
      name: 'compA',
      component: CompA
    }
  ]
})

components/CompA.vue

<template>
  <div class="compA">
    <input v-model.number="num" type="number" step="20">
    <p>{{ animatedNumber }}</p>
  </div>
</template>

<script>
import TWEEN from "@tweenjs/tween.js";

export default {
  data() {
    return {
      num: 0,
      animatedNumber: 0
    }
  },
  watch: {
    num: function (newValue, oldValue) {
      this.myTween(newValue, oldValue)
    }
  },
  methods: {
    myTween(newValue, oldValue) {
      let vm = this;
      const animate = function () {
        if (TWEEN.update()) {
          requestAnimationFrame(animate);
        }
      }

      new TWEEN.Tween({tweeningValue: oldValue})
        .to({tweeningValue: newValue}, 500)
        .onUpdate((object) => {
          vm.animatedNumber = object.tweeningValue.toFixed(0)
        })
        .start()

      animate();
    }
  }
}
</script>

<style scoped>
</style>

注意

不同版本Tween的onUpdate问题

@tween/tween.js:里边的回调函数,第一个参数为Tween对象。
        (不能像下边tween.js那样写,否则this.tweeningNumber.toFixed(0)会报错:Error in callback for watcher "num": "TypeError: Cannot read property 'toFixed' of undefined")
        //我不会告诉你,我查这个问题查了一天😂

tween.js:需要这么写:

new TWEEN.Tween({ tweeningNumber: oldValue })
	.easing(TWEEN.Easing.Quadratic.Out)
	.to({ tweeningNumber: newValue }, 500)
	.onUpdate(function () {
	  vm.animatedNumber = this.tweeningNumber.toFixed(0)
	})
	.start();

测试

访问:http://localhost:8080/#/compA

其他网址

Vue过渡状态 - 小火柴的蓝色理想 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值