基于 raf 和 canvas 的轻量级帧动画库

538 阅读1分钟

Frame-animation

基于 raf 和 canvas 的帧动画工具 支持 任意行列 的原图

github:github.com/JusticHenta…

npm:www.npmjs.com/package/@ju…

Install

npm i @justichentai/frame-animation

Usage

Simple Example

frame-animation 会自动检测你挂载的 el 的尺寸 确保 el 的尺寸刚好是一帧的尺寸

import FrameAnime from '@justichentai/frame-animation'

const anime = new FrameAnime({  
  frame: 24,  
  url: 'url',  
  duration: 2000,  
  el: dom,  
})  

await anime.init()

anime.play()

Options

export interface Options {  
  el: HTMLDivElement // 要挂载的 dom  
  url: string // 帧动画图片 url  
  frame: number // 帧数  
  duration?: number // 持续时间 按 ms 计时  
  column ?: number // 帧动画图片 每行的列数 0 表示一行  
  imageLoadComplete?: (url: HTMLImageElement) => any // 图片加载完毕回调
  frameComplete?: (frame: number) => any // 每帧回调
  completeOne?: (times: number) => any // 每播完一次回调 times 是当前次数
  complete?: () => any // 播放次数用完 结束回调
}

如果你的帧动画原图是这样 一行过去 keyFrameTest.png

column 设置为 0 或者不设置 如果是多行 请把column设置成每行有多少列

Load Image

await anime.init()

Start Animation

anime.play()

Pause Animation

anime.pause()

Play Times

这个方法可以限定播放次数 如果动画播放时调用 它会在当前动画播放完之后开始计时

anime.playTimes(n: number)

Reverse

anime.reverse()

如果你想倒放特定次数

anime.reverse().playTimes(2)

Update

当挂载的 el 尺寸变动 调用这个 api 更新尺寸

anime.update()