文档开发者中心
我的

ETS如何实现幻灯片的浅入浅出

收起
自动换行
深色代码主题
复制
@Entry
@Component
struct SwiperExample {
  private swiperController: SwiperController = new SwiperController()
  @State auto: boolean = false
  @State widthSize: number = 300 //图片宽
  @State heightSize: number = 160 //图片高
  @State opacity: number = 1 //清晰度
  private images: string[] = ['/pages/comment/1.jpg', '/pages/comment/2.jpg', '/pages/comment/3.jpg',
                              '/pages/comment/4.jpg', '/pages/comment/5.jpg']

  build() {
    Column({ space: 5 }) {
      Swiper(this.swiperController) {
        ForEach(this.images, item => {
          Image(item).width(this.widthSize).height(this.heightSize).opacity(this.opacity)
          .animation({
            duration: 4000, // 动画时长
            curve: Curve.EaseOut, // 动画曲线
            iterations: -1, // 播放次数
            playMode: PlayMode.Normal // 动画模式
          })
        }, item => item)
      }
      .index(0)
      .autoPlay(this.auto)
      .interval(3000)
      .indicator(false) // 默认开启指示点
      .loop(true) // 默认开启循环播放
      .duration(2000)
      .vertical(false) // 默认横向切换
      .itemSpace(0)
      .margin({bottom:20})
      .onChange((index: number) => {
        console.info(index.toString())
      })

      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        Button('preview')
          .onClick(() => {
            this.opacity = 0
            this.swiperController.showPrevious()
          })

        Button('next')
          .onClick(() => {
            if(this.opacity === 0) {
              this.opacity = 1
            }else {
              this.opacity = 0
            }
            this.swiperController.showNext()
          })
        Button('Auto')
        .onClick(() => {
          if(!this.auto){
            this.auto = !this.auto
            console.info('auto play')
          }else{
            this.auto = !this.auto
            console.info('stop')
          }
        })
      }
    }.margin({ top: 50 })
  }
}

本来想直接遍历出来,然后利用透明度直接去完成,但是发现,如果代码走自动播放的话,是不触发Swiper的onChange事件的,也就是拿不到Index。有没有大佬指导一下,怎么实现这个功能

点赞
收藏
回复
6
分享
举报
浏览270 发布于2022-01-17 02:59未知归属地
全部评论
最多点赞
最新发布
最早发布

楼主你好,走自动播放的话,目前不触发Swiper的onChange事件的,后续版本已经将触发Swiper的onChange事件纳入规划。切换效果自定义的能力也已经纳入规划。

1
3楼回复于2022-01-20 01:44 未知归属地
  • 176******61
    好的
    2022-01-20 08:05 未知归属地
感觉有点难 这个
1
2楼回复于2022-01-18 15:26 未知归属地
  • 176******61
    是啊,js能操作dom都好实现,但是用ets,我最多能轮播,要加浅入浅出,有点困难
    2022-01-19 01:19 未知归属地
欢迎开发小伙伴们进来帮帮楼主
1
1楼回复于2022-01-17 03:04 未知归属地
  • 176******61
    没有大佬帮解答一下啊,尴尬
    2022-01-18 03:48 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。