uni-app小程式uni.createAnimation動畫效果快速上手教程
阿新 • • 發佈:2022-04-21
在實現某個功能的時候,因為基礎不夠只能拆分2個步驟來學習,第一個學習uni-app小程式uni.createAnimation動畫效果,第二個在思考在這基礎上實現某個功能,於是…..
寫了3小時,出了3個bug
建立動畫
建立動畫有2個方式,為了學習就簡單點:
1.直接在點選的行數中去建立(如果一個介面只有一個動畫那就隨意);
2.onShow函數週期裡面事先建立一個動畫(推舉)
// 生命週期,頁面開啟提前渲染 onShow: function(){ // 初始化一個動畫 var animation = uni.createAnimation({ // 動畫時間 duration: 1000, // 動畫速度 timingFunction: 'linear', }) // 存在return欄位中 this.animation = animation },
設定欄位
欄位裡面我們需要存2個東西,一個是我們建立好的animation,另外一個觸發動畫的開關,例如我們開燈的感覺需要一個開關控制
animationData: {},
open: false
繫結動畫
view畫一個矩形,隨後繫結我們的animation動畫和一個點選函式
<view class="op" :animation="animationData" @tap="openTap()"></view>
觸發函式
點選矩形之後我們判斷布林值是flase還是true來執行相對於動畫效果openTap() { console.log(this.open) if (this.open == false ) { this.open = true; // 定義動畫內容 this.animation.height(100).step(), // 匯出動畫資料傳遞給data層 this.animationData = this.animation.export() } else { this.open = false; this.animation.height(30).step() this.animationData = this.animation.export() } },
總結和注意
1.動畫效果需建立和繫結
2.動畫效果就和一個布林值來操控
3.animation物件的方法列表可以閱讀:(https://uniapp.dcloud.io/api/ui/animation?id=createanimation)
4.animation物件中的height,width之類是px為單位我們在輸入時候需要在upx畫素之間換算(2upx = 1px)
5.必要存在動畫傳遞發給data層
this.animationData = this.animation.export()
案例程式碼
<template> <view class="op" :animation="animationData" @tap="openTap()"></view> </template> <script> export default{ data() { return{ animationData: {}, open: false } }, // 生命週期,頁面開啟提前渲染 onShow: function(){ // 初始化一個動畫 var animation = uni.createAnimation({ // 動畫時間 duration: 1000, // 動畫速度 timingFunction: 'linear', }) // 存在return欄位中 this.animation = animation }, methods:{ openTap() { console.log(this.open) if (this.open == false ) { this.open = true; // 定義動畫內容 this.animation.height(100).step(), // 匯出動畫資料傳遞給data層 this.animationData = this.animation.export() } else { this.open = false; this.animation.height(30).step() this.animationData = this.animation.export() } }, } } </script> <style> .op{ width: 100rpx; height: 60rpx; background-color: #007AFF; margin: 100rpx auto; } </style>