微信小程序开发animation心跳动画效果

下面是关于微信小程序开发animation心跳动画效果的完整攻略:

一、准备工作

  1. 在微信开发者工具中创建一个新的小程序项目。
  2. 在项目根目录下创建一个 animation 文件夹,用于存放心跳动画所需的图片资源。

二、设计心跳动画

  1. 在 animation 文件夹中准备两张心形图片,大小可以根据自己的需求而定。
  2. 在小程序页面的 wxml 文件中将两张图片插入。

html
<image class="beat-icon" src="../../animation/heart@1.png"></image>
<image class="beat-icon" src="../../animation/heart@2.png"></image>

  1. 在小程序页面的 wxss 文件中对两张图片进行绝对定位。

css
.beat-icon {
position: absolute;
top: 0;
left: 0;
width: 50rpx;
height: 50rpx;
z-index: 1;
}

  1. 在小程序页面的 js 文件中添加动画函数,并为两张图片绑定动画效果。

```javascript
const animation = wx.createAnimation({
duration: 1000,
timingFunction: 'ease'
})

setInterval(() => {
animation.scale(1.2).opacity(0.2).step({ duration: 500 })
.scale(0.8).opacity(1).step({ duration: 500 })
this.setData({
animationData: animation.export()
})
}, 2000)
```

三、示例说明

示例一

本示例展示了一个基础的心跳动画效果,点击按钮即可启动动画。

<!-- index.wxml -->
<view class="container">
  <image class="beat-icon" src="../../animation/heart@1.png"></image>
  <image class="beat-icon" src="../../animation/heart@2.png"></image>

  <view class="btn" bindtap="startAnimation">点击开始动画</view>
</view>
// index.js
Page({
  data: {
    animationData: {},
  },
  startAnimation() {
    const animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })

    setInterval(() => {
      animation.scale(1.2).opacity(0.2).step({ duration: 500 })
        .scale(0.8).opacity(1).step({ duration: 500 })
      this.setData({
        animationData: animation.export()
      })
    }, 2000)
  }
})
/* index.wxss */
.container {
  position: relative;
  width: 100%;
  height: 100%;
  padding-top: 200rpx;
  background-color: #fff;
}

.beat-icon {
  position: absolute;
  top: 0;
  left: 0;
  width: 50rpx;
  height: 50rpx;
  z-index: 1;
}

.btn {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 200rpx;
  height: 80rpx;
  margin: 0 auto;
  border: 1px solid #ff5722;
  border-radius: 5px;
  background-color: #fff;
  color: #ff5722;
  font-size: 28rpx;
}

示例二

本示例是将多个心跳动画效果嵌入到一个小程序页面中,每个效果有不同的触发方式,包括点击、页面加载、定时器等。

<!-- index.wxml -->
<view class="container">
  <!-- 效果1:点击触发动画 -->
  <image class="beat-icon" src="../../animation/heart@1.png" bindtap="startAnimation"></image>
  <image class="beat-icon" src="../../animation/heart@2.png" bindtap="startAnimation"></image>

  <!-- 效果2:页面加载时自动播放动画 -->
  <image class="beat-icon" src="../../animation/heart@1.png" 
         animation="{{autoAnim1}}" bindanimationend="resetAnimation"></image>
  <image class="beat-icon" src="../../animation/heart@2.png" 
         animation="{{autoAnim2}}" bindanimationend="resetAnimation"></image>

  <!-- 效果3:定时器触发动画(每2秒钟触发一次) -->
  <image class="beat-icon" src="../../animation/heart@1.png" animation="{{timerAnim1}}"></image>
  <image class="beat-icon" src="../../animation/heart@2.png" animation="{{timerAnim2}}"></image>
</view>
// index.js
Page({
  data: {
    autoAnim1: {},
    autoAnim2: {},
    timerAnim1: {},
    timerAnim2: {},
  },
  onLoad() {
    this.playAutoAnimation()
    this.playTimerAnimation()
  },
  startAnimation() {
    const animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })

    setInterval(() => {
      animation.scale(1.2).opacity(0.2).step({ duration: 500 })
        .scale(0.8).opacity(1).step({ duration: 500 })
      this.setData({
        autoAnim1: animation.export(),
        autoAnim2: animation.export(),
      })
    }, 2000)
  },
  playAutoAnimation() {
    const animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })

    setInterval(() => {
      animation.scale(1.2).opacity(0.2).step({ duration: 500 })
        .scale(0.8).opacity(1).step({ duration: 500 })
      this.setData({
        timerAnim1: animation.export(),
        timerAnim2: animation.export(),
      })
    }, 2000)
  },
  playTimerAnimation() {
    const animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })

    setInterval(() => {
      animation.scale(1.2).opacity(0.2).step({ duration: 500 })
        .scale(0.8).opacity(1).step({ duration: 500 })
      this.setData({
        timerAnim1: animation.export(),
        timerAnim2: animation.export(),
      })
    }, 2000)
  },
  resetAnimation() {
    const resetAnimation = wx.createAnimation({
      duration: 0,
      timingFunction: 'linear',
    })
    resetAnimation.scale(1).opacity(1).step({ duration: 0 })
    this.setData({
      autoAnim1: resetAnimation.export(),
      autoAnim2: resetAnimation.export(),
    })
  }
})
/* index.wxss */
.container {
  position: relative;
  width: 100%;
  height: 100%;
  padding-top: 200rpx;
  background-color: #fff;
}

.beat-icon {
  position: absolute;
  top: 0;
  left: 0;
  width: 50rpx;
  height: 50rpx;
  z-index: 1;
}

以上就是关于微信小程序开发animation心跳动画效果的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序开发animation心跳动画效果 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript的基础知识(随缘更新)

    1.声明与变量 let声明的变量可以多次赋值 let 变量名 = 值; const修饰叫常量,只能赋值一次,但是引用的值可以改变 var声明的变量可以多次赋值 结论:能用let不用var ,因为作用域的问题 2.基本类型和对象类型 undefined 和 null undefined 指 未定义的对象或者属性时 ,或声明了变量没有赋初始值时 null 指不引…

    JavaScript 2023年4月18日
    00
  • js调试工具console.log()方法查看js代码的执行情况

    当我们编写复杂的JavaScript代码时,难免会出现各种错误和异常,这时候需要一些有效的工具来帮助我们进行调试。其中一个非常重要的工具就是 console.log() 方法。 什么是 console.log() 方法? console.log() 方法是 JavaScript 调试的常见方式之一,它在控制台输出一个指定的字符串,可以帮助我们跟踪代码执行过程…

    JavaScript 2023年5月28日
    00
  • JS 中在严格模式下 this 的指向问题

    JS 中的 this 表示函数执行时所在的上下文对象,在不同的情况下,this 指向的对象是不同的,这是 JS 中一个比较重要,也比较复杂的概念。 在严格模式下,this 指向的对象与非严格模式下不同。下面我们通过两个示例来详细讲解在严格模式下 this 的指向问题。 示例一 ‘use strict’; function showThis() { conso…

    JavaScript 2023年6月10日
    00
  • JS判断数组那点事

    JS判断数组那点事:完整攻略 在JavaScript中,我们可以使用各种方式来判断一个变量是否为数组。本攻略将介绍一些常用的方法以及它们的优缺点。 1. 使用typeof运算符 我们可以使用typeof运算符来获取变量的数据类型。对于数组而言,typeof将返回”object”。因此可以使用typeof判断传入的参数是否为”object”,如果是则继续判断是…

    JavaScript 2023年5月27日
    00
  • 如何在现代JavaScript中编写异步任务

    当我们需要执行一些长时间运行的任务时(如发送网络请求或读取文件),为了避免阻塞浏览器进程,我们可以使用异步编程模型。现代JavaScript提供了多个解决方案来处理异步任务,本篇文章将介绍其中几种常用的方法。 1. 回调函数 回调函数是JavaScript中最早也是最常用的异步编程方式。通过传递回调函数作为参数,我们可以在异步任务完成时调用它,以实现在任务完…

    JavaScript 2023年5月28日
    00
  • 简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器

    实现一个简单漂亮的 js 弹窗并让其可自由拖拽需要以下步骤: 确定弹窗的外观和属性,如弹窗大小、标题、内容等。可以使用 HTML 和 CSS 来实现。 示例代码: <div id="popup"> <h3 class="title">弹窗标题</h3> <p class=&qu…

    JavaScript 2023年6月11日
    00
  • javascript的onchange事件与jQuery的change()方法比较

    当需要捕获表单控件的值发生变化时,可以使用JavaScript的onchange事件或jQuery的change()方法,下面进行详细比较。 JavaScript的onchange事件 原理 JavaScript的onchange事件是触发在表单控件的value值发生改变,并且失去焦点的情况下。 比如input,select等表单控件。 使用示例 <i…

    JavaScript 2023年6月11日
    00
  • 利用Math.js解决JS计算小数精度丢失问题

    利用Math.js解决JS计算小数精度丢失问题的完整攻略 问题描述 在JavaScript中进行小数运算时,会容易出现精度丢失的问题,例如在进行两个小数相加时,结果并不是预期的精确值,而是一个近似值。 例如: console.log(0.1 + 0.2); // 0.30000000000000004 解决方案 解决小数精度丢失问题的最简单方法是使用第三方库…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部