animation-video 透明视频动画

解释:animation-video 属于前端组件,为智能小程序提供了将特定视频资源渲染为透明背景动效的能力,可以帮助开发者低成本实现更为沉浸,丰富的动画效果。动画资源设计方法详见透明视频 AFX 。animation-video 组件还提供丰富的 API 来控制动画的播放,暂停,跳到指定位置等,详见 swan.createAnimationVideo

Web 态说明:在 Web 态中 animation-video 组件的支持情况取决于浏览器本身对 WebGL 以及 Video 的支持情况。安卓系统下常见问题有:
1. 部分浏览器(如 UC)不支持 WebGL ,因此动画无法展现。
2. autoplay 功能失效,并且需要用户在页面发生交互行为后调用 animationVideo.play

属性说明

属性名类型默认值必填说明最低版本

resource-width

Number

800

组件使用的 video 视频资源的宽度(单位:px)

3.130.10

resource-height

Number

400

组件使用的 video 视频资源的高度(单位:px)

3.130.10

canvas-style

String

‘width:400px;height:400px’

用于设置动画画布的 CSS 样式

3.130.10

path

String

动画资源地址,支持相对路径以及远程地址。如果是远程路径,注意 response header 里需要设置 Access-Control-Allow-Origin 来防止跨域问题

3.130.10

loop

Boolean

false

动画是否循环播放

3.130.10

autoplay

Boolean

false

动画是否自动播放

3.130.10

bindstarted

EventHandle

动画开始播放的回调

3.130.10

bindended

EventHandle

当播放到末尾时触发 ended 事件(自然播放结束会触发回调,循环播放结束及暂停动画不会触发)

3.130.10

示例

跳转编辑工具

在开发者工具中打开

在 WEB IDE 中打开

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

代码示例

  • SWAN
  • JS
  • CSS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <view class="video-area">
  4. <animation-video
  5. id="myAnimationVideo"
  6. path="{{path}}"
  7. loop="{{loop}}"
  8. resource-width="800"
  9. resource-height="400"
  10. canvas-style="width:200px;height:200px"
  11. autoplay="{{autoplay}}"
  12. bindstarted="started"
  13. bindended="ended">
  14. </animation-video>
  15. </view>
  16. <button class="btn" type="primary" bindtap="changeStatus">{{status}}动画</button>
  17. <button class="btn" type="primary" bindtap="seek">跳转到动画2S处</button>
  18. </view>
  19. </view>

设计指南

可支持透明背景动画,实现沉浸式的动画效果展现,视频文件体积较小,有利于提升小程序性能,动画播放流畅,实现还原度高。
等级进阶、签到、弹窗、运营 banner 、直播礼物等强氛围的场景。
互动性建议不自动播放,展示型建议自动播放。

Bug & Tip

  • Tip:resource-height 和 resource-width 指的是视频资源的高度和宽度(单位:px),与动画组件的宽高没有必然联系。动画组件的宽度和高度是通过 css 来控制的,为避免出现画面被拉伸的情况,建议将 animation-video 组件的宽高比设置的与动画本身宽高比一致。例如,resource-width 是 800px ,resource-height 是 400px ,那么我们认为动画的宽和高比例为(800/2)/400 = 1,此时设置组件的高宽比只要等于 1 效果最佳。
  • Tip:因为最终动画渲染在页面上实际上是一个 canvas,可通过 canvas-style 控制它的 CSS 样式,例如,支持响应式可以设置canvas-style ="width:100%;"
  • Tip:如果视频资源过大,用户网络状态差的情况下,可以通过 API swan.downloadFile 将文件下载到本地,提前将视频资源缓存起来。