HarmonyOS 帧动画如何主动停止

this.uiContext.keyframeAnimateTo({ iterations: -1 }, [
  {
    // 第一段关键帧动画时长为800ms,scale属性做从1到1.5的动画
    duration: 800,
    event: () => {
      this.myScale = 1.5;
    }
  },
  {
    // 第二段关键帧动画时长为500ms,scale属性做从1.5到1的动画
    duration: 500,
    event: () => {
      this.myScale = 1;
    }
  }
]);

关键帧动画的iterations设置-1,是否有方法可以主动停止动画?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以通过新启一个duration为0的animateTo动画来打断原有动画效果,参考示例如下:

import { UIContext } from '@kit.ArkUI';

@Entry
@Component
struct KeyframeDemo {
  @State myScale: number = 1.0;
  uiContext: UIContext | undefined = undefined;
  @State isRecording: boolean = false;

  aboutToAppear() {
    this.uiContext = this.getUIContext?.();
  }

  build() {
    Column() {
      Circle()
        .width(100)
        .height(100)
        .fill("#46B1E3")
        .margin(100)
        .scale({ x: this.myScale, y: this.myScale })
        .onClick(() => {
          if (!this.uiContext) {
            console.info("no uiContext, keyframe failed");
            return;
          }
          this.myScale = 1; // 设置关键帧动画整体播放无限次
          if (this.isRecording) {
            this.uiContext.keyframeAnimateTo({ iterations: -1 },
              [{
                // 关键帧动画时长为800ms,scale属性做从1到1.5的动画
                duration: 800, event: () => {
                  this.myScale = 1.5;
                }
              }])
            this.isRecording = false
            animateTo({ duration: 0, iterations: 1, playMode: PlayMode.Normal }, () => {
              this.myScale = 1
            })
          } else {
            this.isRecording = true
            animateTo({ duration: 1500, iterations: -1, }, () => {
              this.myScale = 0.5;
            })
          }
        })
    }.width('100%').margin({ top: 5 })
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS List页面如何主动停止滚动
206浏览 • 1回复 待解决
HarmonyOS 属性动画中途如何停止
567浏览 • 1回复 待解决
animateTo动画如何直接停止
2646浏览 • 2回复 待解决
HarmonyOS 动画如何停止或者取消?
24浏览 • 1回复 待解决
HarmonyOS canvas动画如何实现逐动画
14浏览 • 1回复 待解决
HarmonyOS animation动画停止位置不对
108浏览 • 1回复 待解决
HarmonyOS 动画demo
325浏览 • 1回复 待解决
HarmonyOS 有没有动画组件
247浏览 • 1回复 待解决
HarmonyOS 动画用什么实现
247浏览 • 1回复 待解决
HarmonyOS 如何停止无限旋转中的动画
114浏览 • 1回复 待解决
HarmonyOS 属性动画怎么监听回调?
537浏览 • 1回复 待解决
服务卡片的进度条如何停止动画
9058浏览 • 1回复 待解决
有谁知道是否支持动画
2584浏览 • 1回复 待解决
如何停止UIAbility自身
2053浏览 • 1回复 待解决
HarmonyOS如何实现布局?
405浏览 • 1回复 待解决