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

yizhihongxing

下面是关于微信小程序开发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日

相关文章

  • js实现String.Fomat的实例代码

    实现一个类似于String.Format的函数,需要掌握 JavaScript 中字符串的相关知识和操作方法,主要包括字符串的拼接和格式化,正则表达式等。 下面是实现String.Format的详细攻略: 1. 在原型链上添加Format方法 JavaScript 中所有对象都有一个__proto__属性,指向该对象的原型。为了实现类似于C#中的String…

    JavaScript 2023年5月28日
    00
  • jQuery学习笔记之创建DOM元素

    jQuery学习笔记之创建DOM元素 什么是DOM DOM (Document Object Model),文档对象模型,是W3C组织推荐的处理XML和HTML文档的标准编程接口。DOM将HTML或XML文档表示为节点与对象的组合,开发者可以使用JavaScript、VBScript等脚本语言对其进行操作。 在jQuery中,大量使用DOM元素操作,例如:创…

    JavaScript 2023年6月10日
    00
  • JavaScript中的原始值和复杂值

    JavaScript中的原始值和复杂值 在JavaScript中,数据类型可以分为两种:原始值和复杂值。 原始值 原始值是最基本的数据类型,它们是不可变的。JavaScript中有5种原始值: 字符串(String):用双引号(”)或单引号(’)包含的字符序列,例如:”Hello World”或’My Name is Peter’。 数字(Number):整…

    JavaScript 2023年5月27日
    00
  • jQuery过滤特殊字符及JS字符串转为数字

    一、jQuery过滤特殊字符 1.1 什么是特殊字符? 特殊字符通常指那些不能作为标准常量或变量名的字符,如空格、冒号、括号、单引号、双引号等。在jQuery中,特殊字符还包括CSS选择器中特殊字符,如:. # ~ 等等。 1.2 如何过滤特殊字符? 使用jQuery中的正则表达式过滤掉特殊字符。 以下是一个示例代码,用于输入框中过滤特殊字符: // 给输入…

    JavaScript 2023年5月28日
    00
  • js显示当前日期时间和星期几

    JS显示当前日期、时间和星期几的完整攻略如下: 1. 获取当前日期时间: JavaScript中,通过Date对象可以获取当前系统时间,我们可以使用new Date()来获取一个Date实例,然后通过对实例的操作来获取日期时间信息。下面是获取当前日期时间的代码: let now = new Date(); let year = now.getFullYear…

    JavaScript 2023年5月27日
    00
  • Javascript之旅 对象的原型链之由来

    (一)对象的原型链由来 在 JavaScript 中,每个对象都有一个原型对象。原型对象充当着对象的模板,它包含了常用的属性和方法,子对象可以通过原型链继承这些属性和方法。 每个对象都可以通过__proto__属性访问它的原型对象,对象的原型对象也可以拥有自己的原型对象,这就是所谓的原型链。 但是,面对大量对象,JavaScript 在内存中会保存很多原型对…

    JavaScript 2023年6月10日
    00
  • springboot中thymeleaf模板使用详解

    这里是 SpringBoot 中 Thymeleaf 模板使用详解的完整攻略: 什么是Thymeleaf Thymeleaf 是一种现代化的服务器端 Java 模板引擎,可以与 Spring Boot 集成使用,支持 HTML、XML、JavaScript、CSS 甚至纯文本。模板文件可以使用包含表达式的标记替换,可以非常方便的将模型数据绑定到 HTML U…

    JavaScript 2023年6月10日
    00
  • JavaScript常用正则函数用法示例

    JavaScript中有很多正则函数,常用的有test、exec、match、replace和split等,下面我将一一介绍它们的用法示例: 1. test函数 test函数用于判断一个字符串是否满足某种正则表达式,返回一个布尔值。 const str = "hello world"; const reg = /hello/; const…

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