uniapp 动画的实现

效果图:

在这里插入图片描述

官方文档

创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。

<template>
	<view>
		<view class="ani" :animation="animationData" @click="rotateThenScale"></view>
		<view class="love" :animation="animationData1">
			<image src="../../static/love.png" ></image>
		</view>		
	</view>
</template>

<script>
	export default {
		data() {
			return {
				animation:'',
				animationData: {},
				animationData1: {}
			}
		},
		onShow: function() {
			var animation = uni.createAnimation({				
				duration: 1000,
				timingFunction: 'ease'				
			})
			this.animation = animation
		
			setTimeout(() => {
				//放大4倍,旋转45度
				animation.scale(4, 4).rotate(45).step()
				this.animationData = animation.export()
			},1000)

			setTimeout(() => {
				//translate 一个参数时,表示在X轴偏移tx,单位px;两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位px。
				animation.translate(84,26).step()
				this.animationData = animation.export()				
			}, 2000)
			
			/* 心跳效果 */
			var animation1 = uni.createAnimation({
				duration: 450,
				timingFunction: 'linear',
				delay: 1			
			})
			var next = true
			setInterval(() => {
				if (next) {
					animation1.scale(1.15).step() 
				} else {
					animation1.scale(0.85).step()
				}
				next = !next;
				this.animationData1 = animation1.export()
			}, 500)
		},
		
		methods: {			
			rotateAndScale: function() {
				// 旋转同时缩小
				this.animation.rotate(90).scale(0.5, 0.5).step()
				this.animationData = this.animation.export()
			},
			rotateThenScale: function() {
				// 先旋转后放大
				this.animation.rotateZ(45).step()
				this.animation.scaleX(2, 2).step()
				this.animationData = this.animation.export()
			},
			rotateAndScaleThenTranslate: function() {
				// 先旋转同时放大,然后平移
				this.animation.rotate(45).scale(2, 2).step()
				this.animation.translate(100, 100).step({
					duration: 1000
				})
				this.animationData = this.animation.export()
			}
			
		}
	}
</script>

<style>
	.ani{
		background:red;
		height:100rpx;
		width:100rpx;
	}
	
	.love{		
		height:200rpx;
		width:200rpx;
		margin-left: 360rpx;
	}
	image{
		height:200rpx;
		width:200rpx;
	}


</style>

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值