动画
说明: 从API Version 6 开始支持。
导入模块
requestAnimationFrame:无需导入
cancelAnimationFrame:无需导入
createAnimator:
import animator from '@ohos.animator';
权限列表
无
requestAnimationFrame
requestAnimationFrame(handler[, [ ...args]]): number
请求动画帧,逐帧回调JS函数。
-
参数
表示要逐帧回调的函数。requestAnimationFrame函数回调handler函数时会在第一个参数位置传入timestamp时间戳。它表示requestAnimationFrame开始去执行回调函数的时刻。
-
返回值
-
示例
data: { requestId: 0, startTime: 0, }, beginAnimation() { cancelAnimationFrame(this.requestId); this.requestId = requestAnimationFrame(this.runAnimation); }, runAnimation(timestamp) { if (this.startTime == 0) { this.startTime = timestamp; } var elapsed = timestamp - this.startTime; if (elapsed < 500) { console.log('callback handler timestamp: ' + timestamp); this.requestId = requestAnimationFrame(this.runAnimation); } }
cancelAnimationFrame
cancelAnimationFrame(requestId: number): void
取消动画帧,取消逐帧回调请求。
-
参数
-
示例
data: { requestId: 0, startTime: 0, }, beginAnimation() { cancelAnimationFrame(this.requestId); this.requestId = requestAnimationFrame(this.runAnimation); }, runAnimation(timestamp) { if (this.startTime == 0) { this.startTime = timestamp; } var elapsed = timestamp - this.startTime; if (elapsed < 500) { console.log('callback handler timestamp: ' + timestamp); this.requestId = requestAnimationFrame(this.runAnimation); } }, stopAnimation() { cancelAnimationFrame(this.requestId); }
createAnimator
createAnimator(options[...]): void
创建动画对象。
-
参数
-
options说明
动画启停模式,默认值none,详情见:animation-fill-mode
动画播放模式,默认值normal,详情见:animation-direction
-
animator支持的接口
-
animator支持的事件:
-
示例
<!-- hml --> <div class="container"> <div class="Animation" style="height: {{divHeight}}px; width: {{divWidth}}px; background-color: red;" onclick="Show"> </div> </div>
// js import Animator from "@ohos.animator"; export default { data : { divWidth: 200, divHeight: 200, animator: null }, onInit() { var options = { duration: 1500, easing: 'friction', fill: 'forwards', iterations: 2, begin: 200.0, end: 400.0 }; this.animator = Animator.createAnimator(options); }, Show() { var options1 = { duration: 2000, easing: 'friction', fill: 'forwards', iterations: 1, begin: 200.0, end: 400.0 }; this.animator.update(options1); var _this = this; this.animator.onframe = function(value) { _this.divWidth = value; _this.divHeight = value; }; this.animator.play(); } }