HarmonyOS 如何实现跑分效果

是否可以实现数字累加效果,类似ValueAnimator,可以数字累加1加到100效果,不是匀速,开始跟头尾加的比较慢,后面加比较快。

HarmonyOS
2025-01-09 16:49:26
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

参考示例如下:

index.ets

@State @Watch("scoreChange") value: number = 0
@State score:string[] = []
aboutToAppear(): void {
  this.scoreChange()
}

scoreChange() {
  this.score = this.value.toString().split("")
  console.log("this.score.toString():" + this.score.toString())
}

SwiperNums({ score: this.score, value: this.value })

SwiperNums.ets

@Component
export struct SwiperNums {
  swiperData: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  @Link @Watch("valueChange") value: number;
  @Link score: string[];
  @State stop: boolean[] = []

  aboutToAppear(): void {
    for (let i = 0; i < this.score.length; i++) {
      this.stop[i] = false
    }
  }

  valueChange() {
    for (let i = 0; i < this.stop.length; i++) {
      this.stop[i] = false
    }
  }

  build() {
    if (this.value === 0) {
      Column() {
        Text("0")
          .fontSize(18)
          .width("80%")
          .fontColor(Color.White)
      }
    } else {
      Row() {
        ForEach(this.score, (item1: string, index1: number) => {
          Swiper() {
            ForEach(this.swiperData, (item: number) => {
              Column() {
                Text(`${item}`)
                  .fontSize(18)
                  .width("80%")
                  .fontColor(Color.White)
              }.alignItems(HorizontalAlign.Start)
            }, (item: number) => JSON.stringify(item))
          }
          .width(10)
          .loop(true)
          .autoPlay(!this.stop[index1])
          .vertical(true)
          .indicator(false)
          .interval(100 / (index1 + 1))
          .duration(200 / (index1 + 1))
          .curve(Curve.EaseOut)
          .index(Number.parseInt(item1))
          .onChange((index: number) => {
            if (item1 === index + "") {
              setTimeout(() => {
                this.stop[index1] = true
                console.log(`onChange:第${index1}个的数字为${index}}`)
              }, 500)
            }
          })
        })
      }
    }
  }
}
分享
微博
QQ
微信
回复
2025-01-09 18:28:32
相关问题
HarmonyOS 如何实现阴影效果
382浏览 • 1回复 待解决
HarmonyOS 如何实现粒子效果
250浏览 • 1回复 待解决
HarmonyOS 如何实现数据翻页效果
427浏览 • 1回复 待解决
HarmonyOS 如何实现滚动渐变效果
695浏览 • 1回复 待解决
HarmonyOS 如何实现底部弹窗效果
634浏览 • 1回复 待解决
HarmonyOS如何实现文字轮播效果
654浏览 • 1回复 待解决
HarmonyOS 如何实现阴影边框效果
1054浏览 • 1回复 待解决
如何实现星级评分效果
789浏览 • 1回复 待解决
canvas如何实现水印效果
1365浏览 • 1回复 待解决
HarmonyOS 如何实现抽屉效果的控件
219浏览 • 1回复 待解决
HarmonyOS 如何实现文字描边效果
827浏览 • 0回复 待解决
HarmonyOS canvas如何实现画线跟手效果
303浏览 • 1回复 待解决
HarmonyOS 如何实现折叠吸顶效果
311浏览 • 1回复 待解决
HarmonyOS 渐变遮罩效果如何实现
509浏览 • 1回复 待解决
HarmonyOS app如何实现毛玻璃效果
134浏览 • 1回复 待解决
如何实现动画转场效果
1236浏览 • 1回复 待解决
如何实现视频滤镜效果
2378浏览 • 1回复 待解决
HarmonyOS 如何实现顶部吸顶效果
140浏览 • 1回复 待解决
HarmonyOS 如何实现柔滑边缘的效果
280浏览 • 1回复 待解决
HarmonyOS 如何实现白色毛玻璃效果
163浏览 • 1回复 待解决
如何实现顶部渐变遮罩效果
794浏览 • 1回复 待解决