首页 > 其他分享 >关于使用 z-swiper 3d流的的方法

关于使用 z-swiper 3d流的的方法

时间:2023-06-15 15:02:48浏览次数:53  
标签:self 关于 oldindexnum zSwiper indexnum refs swiper 3d

使用的是这个组件3D流 | zebra-swiper (zebraui.com),是在uniapp中使用,本文章是为了解决一些使用这个组件时的需求来创作的。

这个组件的功能是在uniapp上实现3d效果轮播图,效果可以,但是功能上差一些,需要我们自己来弥补。

首先是滑动的时候会出现因为惯性效果页面上显示的已经到第4个但是下标还在第三个的情况

<view class="content">
				<z-swiper v-model="list" ref="zSwiper" :options="options" @sliderMove="sliderMove" @touch-end="touchEnd"
					@touch-start="touchStart">
					<z-swiper-item v-for="(item,index) in list" :key="index"
						:style='index>=indexnum-1&&index<=indexnum+1?"opacity:1":"opacity:0"'
						@click='topoverhaul(index)'>
						<view class="box">
							<image :src="item" mode="aspectFit"></image>
							<view class="botimg2">
								<image class="image2"
									:src="index != indexnum?'/static/project/index/bot1.png':'/static/project/index/bo1t1.png'"
									mode="aspectFill"></image>
								<image class="image3" src='/static/project/index/quan.png' mode="aspectFill"
									v-if='index == indexnum'></image>
								<span class='indexname'>{{titlelist[index].name}}</span>
							</view>
						</view>
					</z-swiper-item>
				</z-swiper>
				<image class="leftimg" src="/static/project/index/slide.png" mode="" @click="toleft"></image>
				<image class="rightimg" src="/static/project/index/slide.png" mode="" @click="toright"></image>
			</view>

中间是图片结构,我们在切换地时候会去实现botimg2的选中状态切换

未来解决问题我们在互动开始和动画结束的时间分别做处理

移动开始的方法里我们记录下开始时的下标,在移动的时候进行更新

touchStart() {//移动开始的方法
				this.oldindexnum = this.indexnum
				//储存移动距离
				this.traveldistance = this.$refs.zSwiper.swiper.getTranslate()
			},
sliderMove(e) { //   中部拖动方法
				if (this.indexnum != e.activeIndex) {
					console.log('改变了');
					this.oldindexnum = this.indexnum
					this.indexnum = e.activeIndex
				}
			},

过渡动画结束后

			touchEnd(e) { //用来解决移动但是未触发的问题
			let self = this
			setTimeout(()=>{
				console.log("swiper触摸结束了", e,e.activeIndex)
				if (self.oldindexnum == self.indexnum) { //判断移动后是否发生改变   相等是未发生的状态
					if (self.traveldistance < self.$refs.zSwiper.swiper.getTranslate()) { //向右
						let num = self.$refs.zSwiper.swiper.getTranslate() - self.traveldistance
						if (num > 2) { //这个是给他的容错,在这个容错内不会触发
							if (self.indexnum > 0) {
								self.oldindexnum = self.indexnum
								self.indexnum--
								if (uni.getSystemInfoSync().deviceType == 'tv') {//这个是因为要兼容多端设备
									self.$refs.zSwiper.swiper.slideTo(self.indexnum, 10, false); //切换到第indexnum个slide,速度为0.1秒
								}
							}
						}
					} else {
						let num = self.traveldistance - self.$refs.zSwiper.swiper.getTranslate()
						if (num > 2) {
							if (self.indexnum < self.titlelist.length - 1) {
								self.oldindexnum = self.indexnum
								self.indexnum++
								if (uni.getSystemInfoSync().deviceType == 'tv') {
									self.$refs.zSwiper.swiper.slideTo(self.indexnum, 10, false); //切换到第三个slide,速度为1秒
								}
							}
						}
					}
				}else {//发生移动
					if(e.activeIndex != self.indexnum){//出现惯性导致出错
						self.indexnum = e.activeIndex
					}
				}
				
			},1)
				
 
			},

这里的options是

options: { //中部轮播
					effect: 'panorama',
					slidesPerView: 1.54,
					centeredSlides: true,
					loop: false,
					initialSlide: 1, //初始化的下标
					panorama: {
						depth: 10,
						rotate: -25,
					},
				},
				list: [ //轮播图片
					'https://cdn.zebraui.com/zebra-ui/images/swipe-demo/swipe1.jpg',
					'https://cdn.zebraui.com/zebra-ui/images/swipe-demo/swipe2.jpg',
					'https://cdn.zebraui.com/zebra-ui/images/swipe-demo/swipe3.jpg',
				],

标签:self,关于,oldindexnum,zSwiper,indexnum,refs,swiper,3d
From: https://blog.51cto.com/u_16162242/6492544

相关文章

  • 关于服务器上部署war后怎么配置读取外部的yml文件
    第一步打成war包1.pom.xml修改为<packaging>war</packaging>2.然后就是依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope&g......
  • iOS 3DTouch
    概述iOS10系统登录中国,在系统中对3DTouch的使用需求更频繁,所以对iOS9中便引入的3DTouch功能做一些了解是很有必要的详细概述iOS10系统登录中国,在系统中对3DTouch的使用需求更频繁,所以对iOS9中便引入的3DTouch功能做一些了解是很有必要的在日常开发中,我们经......
  • 关于 mipi cphy 与 dphy 的理解
    客户提出问题:需要cphy的mipi的显示。由于对cphy与dphy不是很了解,查了一些资料。网上的资料。    好了,接下来看看3588核心板原理图。   来说一下自己的理解: mipiD/Cphyport0/1,这个phy, 这个phy有两个port,port是什么意思不知道,对于 ......
  • Unity3D:场景视图视图选项
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生“场景视图视图选项”工具栏您可以使用“场景视图视图选项”工具栏“叠加”来选择用于查看场景以及启用/禁用照明和音频的各种选项。这些控件仅在开发期间影响场景视图,对构建的游戏没有影响。绘制模式(Drawmo......
  • 230615 关于纠音
    在5月初到6月中,你重点学习了音标与纠音.你通过诸多APP,如Elsa,Annie,Audition,你基本上可以有一套比较完整的工具,能够进行语音的识别.你的目标,就是基本上达到80%的准确度,对于主要的单词,不要有明显的硬伤.但是,纠音对你来说,依旧是个严重的挑战.因为,你之前的音标,单词的......
  • 关于int* a,*b;
    int*  不是一个完整的类型名,只有int是基本类型名,在int* a,*b;中,a前面的 * 是标识符或者说是类型修饰符,他表示a这个指针指向的数据类型是int类型,而后面b前面的*是解引用操作符,表示对指针b解引用后的数据类型是int类型的;int* 只是一个指针类型的说明......
  • 关于xfs文件系统uuid的修改方法
    场景1:系统中有两个文件系统的uuid是一样(UUID 是通用唯一识别码(UniversallyUniqueIdentifier)的缩写)场景2:因一些特殊的原因,需要将文件系统的uuid修改成特定的uuid 当然场景1,其实也可以通过笔者另一篇文章中讲到的使用 mount-onouuid/dev/nvme1n1/nvme1n1的方式解......
  • 【论文阅读】MONAI Label:人工智能辅助的 3D 医学图像交互式标注框架
    Abstract缺乏带注释的数据集是训练监督AI算法的主要挑战,因为手动注释既昂贵又耗时。为了解决这个问题,我们提出了MONAILabel,这是一个免费的开源平台,有助于开发基于AI的应用程序,旨在减少注释3D医学图像数据集所需的时间。通过MONAILabel,研究人员可以开发专注于其专业领域的......
  • 关于函数指针的一些问题小结
    最近接到一个需求,使用sdk提供的消息回调,一般我们是继承sdk的消息类,然后sdk的消息回调(虚函数)会在有消息的时候调用回调指针,从而触发回调不过因为sdk那边又对该消息类二次封装了并提供了一些接口,所以在研究二次封装的方法时,遇到了一些有意思的问题,故记录下typedefvoid(_......
  • 关于服务器的一些笔记
    //查看端口占用netstat-anp|grep8080//查看占用8080端口的进程:fuser-v-ntcp8080//杀死指定进程kill-s91154//持久化运行jar包nohupjava-jargdcx-web-1.0.0.jar& 内网穿透工具https://dashboard.cpolar.com/login......