HarmonyOS 自定义控件的aboutToAppear生命周期里执行animateTo动画没有效果?

大致的原因推测可能是因为aboutToAppear在build之前,目前在aboutToAppear中加setTimeout可以解决该问题,setTimeout感觉无法完全保证将动画执行放到build后,想咨询下有没有更优的解决方案

@Component 
export struct Block { 
  @Prop blockWidth: Length = 40 
  @Prop blockHeight: Length = 40 
  @Prop needDynamics: boolean = true 
  @Prop blockRadius: Resource | number = $r('app.float.radiusS') 
  @State opacityValue: number = this.needDynamics ? 0.4: 1 
 
  startAnimation () { 
    if (!this.needDynamics) return 
    animateTo({ 
      playMode: PlayMode.Alternate, 
      iterations: -1, 
      duration: 1000, 
    }, () => { 
      this.opacityValue = 1 
    }) 
  } 
 
  aboutToAppear(): void { 
    // 不加setTimeout动画无效,setTimeout感觉无法完全保证将动画执行放到build后 
    setTimeout(() => { 
      this.startAnimation() 
    }, 0) 
  } 
 
  build() { 
    Column() 
      .width(this.blockWidth) 
      .height(this.blockHeight) 
      .borderRadius(this.blockRadius) 
      .backgroundColor($r('app.color.fill2')) 
      .opacity(this.opacityValue) 
  } 
}
阅读 717
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进