jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
39 lines (35 loc) • 841 B
text/typescript
export const createUniformSpeedAnimation = (
speed = 10,
callback: (delta: number) => void
) => {
let request = null
let startTime = null
const start = () => {
if (request) return
request = requestAnimationFrame((timestamp) => {
if (startTime === null) {
startTime = timestamp
}
const deltaTime = timestamp - startTime
const delta = (deltaTime / 1000) * speed
callback(delta)
request = null
start()
})
}
start()
return () => {
if (request) {
cancelAnimationFrame(request)
request = null
}
startTime = null
}
}
//越接近阈值,速度越小,越远离阈值,速度越大
export const calcSpeedFactor = (delta = 0, threshold = Infinity) => {
if (threshold >= delta) {
return (threshold - delta) / threshold
}
return 0
}