image-animator

更新时间:

图片帧动画播放器。

属性

支持通用属性还支持如下属性:

名称 类型 默认值 必填 描述
images Array<ImageFrame> - 设置图片帧信息集合。每一帧的帧信息包含图片路径、图片大小和图片位置信息。目前支持的图片格式为 png。
predecode Number 0 是否启用预解码,默认值为 0,即不启用预解码,如该值设为 2,则播放当前页时会提前加载后面两张图片至缓存以提升性能
iteration number | string infinite 设置帧动画播放次数。number 表示固定次数,infinite 枚举表示无限次数播放。
reverse boolean false 设置播放顺序。false 表示从第 1 张图片播放到最后 1 张图片; true 表示从最后 1 张图片播放到第 1 张图片。
fixedsize boolean true 设置图片大小是否固定为组件大小。true 表示图片大小与组件大小一致,此时设置图片的 width 、height 、top 和 left 属性是无效的。false 表示每一张图片的独设置。
duration String - 每一帧图片的播放时长,单位支持[s(秒)或者 ms(毫秒)],默认单位为 ms。示例:'1000ms'
fillmode String forwards 指定帧动画执行结束后的状态。可选项有:none:恢复初始状态。forwards:保持帧动画结束时的状态
transition-timing-function String linear 运动曲线的属性值
poster String first 设置帧动画不执行时的展示。可选项有:first:展示第一帧图片;last:展示最后一帧图片

ImageFrame 说明

名称 类型 默认值 必填 描述
src <uri> - 图片路径,图片格式为 png。
width <length> 0 图片宽度。示例:'100px'
height <length> 0 图片高度。 示例:'100px'
top <length> 0 图片相对于组件左上角的纵向坐标。示例:'100px'
left <length> 0 图片相对于组件左上角的横向坐标。 示例:'100px'
duration Number - 每一帧图片的播放时长,单位毫秒。示例:100

transition-timing-function 属性值:

描述
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。

样式

支持通用样式

事件

支持通用事件外,还支持如下事件:

名称 参数 描述
start - 帧动画启动时触发。
pause - 帧动画暂停时触发。
stop - 帧动画结束时触发。
resume - 帧动画恢复时触发。
updatetime {currentTime} 帧动画播放过程中触发。

支持如下方法

名称 参数 描述
start - 开始播放图片帧动画。再次调用,重新从第 1 帧开始播放。
pause - 暂停播放图片帧动画。
stop - 停止播放图片帧动画。
resume - 继续播放图片帧。
getState - 获取播放状态。playing:播放中。paused:已暂停 stopped:已停止。

示例

<template>
  <div class="container">
    <image-animator class="animator" id="animator" images="{{frames}}" />
    <div class="btn-box">
      <input class="btn" type="button" value="start" onclick="handleStart" />
      <input class="btn" type="button" value="stop" onclick="handleStop" />
      <input class="btn" type="button" value="pause" onclick="handlePause" />
      <input class="btn" type="button" value="resume" onclick="handleResume" />
    </div>
  </div>
</template>

<script>
  export default {
    data: {
      frames: [
        {
          src: '/common/asserts/heart78.png',
        },
        {
          src: '/common/asserts/heart79.png',
        },
      ],
    },
    onReady() {
      let state = this.$element('animator').getState()

      switch (state) {
        case 'playing':
          //实现具体的业务逻辑
          break
        case 'paused':
          //实现具体的业务逻辑
          break
        case 'stopped':
          //实现具体的业务逻辑
          break
      }
    },
    handleStart() {
      this.$element('animator').start()
    },
    handlePause() {
      this.$element('animator').pause()
    },
    handleResume() {
      this.$element('animator').resume()
    },
    handleStop() {
      this.$element('animator').stop()
    },
  }
</script>
复制代码

image-animator组件示例

图片帧动画播放器。
基础用法
<template>
  <div class="wrapper">
    <image-animator
      class="image-animator"
      id="animator"
      duration="{{ duration }}"
      images="{{ frames }}"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      frames: Array.from(
        { length: 10 },
        (v, k) => (v = { src: `/assets/images/animate/pic${k}.png` })
      ),
      duration: '330ms'
    }
  },
  onShow() {
    this.$element('animator').start()
  }
}
</script>

<style>
.wrapper {
  width: 480px;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.image-animator {
  width: 500px;
  height: 400px;
}
</style>
复制代码
图标图标
图标图标
图标图标
以上内容对您是否有帮助?
  • 毫无帮助
  • 帮助不大
  • 一般
  • 很好
  • 非常好
意见反馈