当前位置: 首页 > article >正文

微信小程序中实现进入页面时数字跳动效果(自定义animate-numbers组件)

微信小程序中实现进入页面时数字跳动效果

  • 1. 组件定义,新建```animate-numbers```组件
    • 1.1 index.js
    • 1.2 wxml
    • 1.3 wxss
  • 2. 使用组件

1. 组件定义,新建animate-numbers组件

1.1 index.js

// components/animate-numbers/index.js
Component({
  properties: {
    number: {
      type: Number,
      value: 0
    },
    duration: {
      type: Number,
      value: 1000
    }
  },

  data: {
    displayNumber: 0,
    animationFrameId: null
  },

  observers: {
    'number': function (newNumber) {
      this.animateNumber(newNumber);
    }
  },

  methods: {
    animateNumber(targetNumber) {
      const start = this.data.displayNumber;//旧值
      const end = targetNumber;//新值
      const duration = this.properties.duration;
      const increment = (end - start) / (duration / 16); // 假设每秒60帧,每帧间隔约16ms
      let current = start;
      if(this.data.animationFrameId){
        clearInterval(this.data.animationFrameId);
      }

      const animate = () => {
        current += increment;
        if ((increment > 0 && current >= end) || (increment < 0 && current <= end)) {
          clearInterval(this.data.animationFrameId);
          this.setData({ displayNumber: end });
        } else {
          this.setData({ displayNumber: Math.round(current) });
        }
      };
      this.data.animationFrameId = setInterval(animate, 16);
    }
  },
  // 组件被移除时清除定时器
  detached() {
    clearInterval(this.data.animationFrameId);
  }
});

1.2 wxml

<view>{{displayNumber}}</view>

1.3 wxss

page {
  font-size: 48rpx;
  font-weight: bold;
}

2. 使用组件

"animate-numbers": "../../../components/animate-numbers/index"

 <animate-numbers number="{{attendanceInfo.month_avg_days}}" duration="1000"/>

http://www.kler.cn/a/516068.html

相关文章:

  • 【MySQL】 库的操作
  • 《鸿蒙Next应用商店:人工智能开启智能推荐与运营新时代》
  • Flutter:搜索页,搜索bar封装
  • Android OpenGL(六) 纹理
  • 观察者模式 - 观察者模式的应用场景
  • 【Mac】Python相关知识经验
  • 前后端交互过程
  • mysql my.ini 配置参数结束
  • 高性能队列 Disruptor 在 IM 系统中的实战
  • Linux进程间通信(补充)
  • 用 Java 发送 HTML 内容并带附件的电子邮件
  • Unity3D基于Unity整合BEPUphysicsint物理引擎实战详解
  • 系统相关类——java.lang.Math (三)(案例详细拆解小白友好)
  • 开发思维到业务思维的转变
  • go学习杂记
  • proxysql读写分离的部署
  • B树系列详解
  • 使用printmap()函数来打印地图
  • Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口
  • “““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
  • DBSyncer开源数据同步中间件
  • kong 网关和spring cloud gateway网关性能测试对比
  • Spring 是如何解决循环依赖问题
  • 关于 SR-IOV 架构论文的总结文章
  • 使用 .Net Core 6.0 NPOI 读取excel xlsx 单元格内的图片
  • Versal - ChipScoPy + XSDB + Python CLI