显示动画animateTo不能暂停动画,属性动画animation暂停和重新执行可通过pause和play来控制,详细情况可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-animator-V5请参考import { Animator as animator, AnimatorResult } from '@kit.ArkUI'; @Entry @Component struct AnimatorTest { private TAG: string = '[AnimatorTest]' private backAnimator: AnimatorResult | undefined = undefined private flag: boolean = false @State wid: number = 100 @State hei: number = 100 @State ang: number = 0 create() { let _this = this this.backAnimator = animator.create({ duration: 2000, easing: "linear", delay: 0, fill: "forwards", direction: "normal", iterations: -1, begin: 0, end: 360 }) this.backAnimator.onFinish = ()=> { _this.flag = true console.info(_this.TAG, 'backAnimator onfinish') } this.backAnimator.onRepeat = ()=> { console.info(_this.TAG, 'backAnimator repeat') } this.backAnimator.onCancel = ()=> { console.info(_this.TAG, 'backAnimator cancel') } this.backAnimator.onFrame = (value:number)=> { _this.wid = value _this.hei = value _this.ang = value } } aboutToDisappear() { // 由于backAnimator在onframe中引用了this, this中保存了backAnimator, // 在自定义组件消失时应该将保存在组件中的backAnimator置空,避免内存泄漏 this.backAnimator = undefined; } build() { Column() { Column() { Column() .width(200) .height(200) .rotate({ x: 0, y: 0, z: 1, centerX: '50%', centerY: '50%', angle: this.ang }) .backgroundColor(Color.Red) } .width('100%') .height(300) Column() { Row() { Button('create') .fontSize(30) .fontColor(Color.Black) .onClick(() => { this.create() }) } .padding(10) Row() { Button('play') .fontSize(30) .fontColor(Color.Black) .onClick(() => { this.flag = false if(this.backAnimator){ this.backAnimator.play() } }) } .padding(10) Row() { Button('pause') .fontSize(30) .fontColor(Color.Black) .onClick(() => { if(this.backAnimator){ this.backAnimator.pause() } }) } .padding(10) Row() { Button('finish') .fontSize(30) .fontColor(Color.Black) .onClick(() => { this.flag = true if(this.backAnimator){ this.backAnimator.finish() } }) } .padding(10) Row() { Button('reverse') .fontSize(30) .fontColor(Color.Black) .onClick(() => { this.flag = false if(this.backAnimator){ this.backAnimator.reverse() } }) } .padding(10) Row() { Button('cancel') .fontSize(30) .fontColor(Color.Black) .onClick(() => { if(this.backAnimator){ this.backAnimator.cancel() } }) } .padding(10) Row() { Button('reset') .fontSize(30) .fontColor(Color.Black) .onClick(() => { if (this.flag) { this.flag = false if(this.backAnimator){ this.backAnimator.reset({ duration: 3000, easing: "ease-in", delay: 0, fill: "forwards", direction: "alternate", iterations: 3, begin: 100, end: 300 }) } } else { console.info(this.TAG, 'Animation not ended') } }) } .padding(10) } } } }
显示动画animateTo不能暂停动画,属性动画animation暂停和重新执行可通过pause和play来控制,详细情况可参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-animator-V5
请参考