<!-- <block v-for="(guess,gindex) in guessList">  -->
		<!-- 动画第一步 标签内定义:animation="animationData" if为多个那么animationDataArr[index]  -->
		
		<view :animation="animationData" class="animation-opacity" @click="praiseMe">+1</view>
		
		<!-- <view :animation="animationData" :data-gindex="gindex" class="animation-opacity" @click="praiseMe">+1</view> -->
		<!-- </block> -->

script

<script>

	export default {
		data() {
			return {
				title: 'Hello',
				superheroList: [],
				animationData: {},
				// 如果多个循环出的按钮想要实现此效果,需要给动画对象包括进数据,再标签内设置currentIndex
				animationDataArr: [{}, {}, {}, {}]
			}
		},
		onUnload() {
			//页面卸载的时候清除对象
			this.animationData = {};
			this.animationDataArr = [{}, {}, {}, {}]
		},
		onLoad() {
			//通过API修改导航栏的属性
			uni.setNavigationBarColor({
				frontColor: "#FFFFFF",
				backgroundColor: "#000000"
			})
			var me = this;
			// #ifdef APP-PLUS || MP-WEIXIN
			//2再页面创建的时候,创建一个临时动画对象
			this.animation = uni.createAnimation();
			// #endif
		},
		methods: {
			//实现动画效果
			praiseMe(e) {
				// #ifdef APP-PLUS || MP-WEIXIN
				//3   获取当前点击的下标
				var gindex = e.currentTarget.dataset.gindex;
				//构建动画数据,并且通过step来表示这组动画的完成
				this.animation.translateY(-60).opacity(1).step({
					duration: 400
				});
				//导出动画数据到view组件,实现组件的动画
				this.animationData = this.animation.export();
				//4   将临时对象赋值给当前对象。然后从数组对象中找到该index的对象并导出
				// this.animationData = this.animation;
				// this.animationDataArr[gindex] = this.animationData.export();
				//还原动画
				setTimeout(function() {
					this.animation.translateY(0).opacity(0).step({
						duration: 0
					});
					//重新开始动画
					this.animationData = this.animation.export();
					//4重新开始动画
					// this.animationData = this.animation;
					// this.animationDataArr[index] = this.animationData.export();
				}.bind(this), 500)
				// #endif
			}
		}

	}
Logo

分享最新的 NVIDIA AI Software 资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐