UNPKG

sard-uniapp

Version:

sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库

43 lines (42 loc) 1.09 kB
import { ticker } from './lwa.slim'; const friction = 0.95; // 摩擦系数 const minVelocity = 0.1; // 最小速度 export function createInertialAnimate(v, options) { const initialVelocity = Math.abs(v); let isAnimating = false; const reversed = v < 0; const { update, complete } = options; let velocity = initialVelocity; function animate() { if (!isAnimating) return; velocity *= friction; let displacement = velocity * 15; displacement *= reversed ? -1 : 1; update?.(displacement); if (velocity < minVelocity) { isAnimating = false; ticker.remove(animate); complete?.(); } } function play() { if (!isAnimating) { isAnimating = true; ticker.add(animate); } } function stop() { if (isAnimating) { isAnimating = false; ticker.remove(animate); } } return { stop, play, isAnimating() { return isAnimating; }, }; }