greenPro/unpackage/dist/dev/mp-weixin/pages/template/swiper-vertical/swiper-vertical.js

147 lines
4.3 KiB
JavaScript
Raw Normal View History

2024-06-02 14:51:29 +00:00
"use strict";
const common_vendor = require("../../../common/vendor.js");
const videoData = [
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-01.mp4"
},
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-02.mp4"
},
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-03.mp4"
},
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-01.mp4"
},
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-02.mp4"
},
{
src: "https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hellouniapp/hello-nvue-swiper-vertical-03.mp4"
}
];
const _sfc_main = {
data() {
return {
circular: true,
videoList: [
{
id: "video0",
src: "",
img: ""
},
{
id: "video1",
src: "",
img: ""
},
{
id: "video2",
src: "",
img: ""
}
],
videoDataList: []
};
},
onLoad(e) {
},
onReady() {
this.init();
this.getData();
},
methods: {
init() {
this._videoIndex = 0;
this._videoContextList = [];
for (var i = 0; i < this.videoList.length; i++) {
this._videoContextList.push(common_vendor.index.createVideoContext("video" + i, this));
}
this._videoDataIndex = 0;
},
getData(e) {
this.videoDataList = videoData;
setTimeout(() => {
this.updateVideo(true);
}, 200);
},
onSwiperChange(e) {
let currentIndex = e.detail.current;
if (currentIndex === this._videoIndex) {
return;
}
let isNext = false;
if (currentIndex === 0 && this._videoIndex === this.videoList.length - 1) {
isNext = true;
} else if (currentIndex === this.videoList.length - 1 && this._videoIndex === 0) {
isNext = false;
} else if (currentIndex > this._videoIndex) {
isNext = true;
}
if (isNext) {
this._videoDataIndex++;
} else {
this._videoDataIndex--;
}
if (this._videoDataIndex < 0) {
this._videoDataIndex = this.videoDataList.length - 1;
} else if (this._videoDataIndex >= this.videoDataList.length) {
this._videoDataIndex = 0;
}
this.circular = this._videoDataIndex != 0;
if (this._videoIndex >= 0) {
this._videoContextList[this._videoIndex].pause();
this._videoContextList[this._videoIndex].seek(0);
}
this._videoIndex = currentIndex;
setTimeout(() => {
this.updateVideo(isNext);
}, 200);
},
getNextIndex(isNext) {
let index = this._videoIndex + (isNext ? 1 : -1);
if (index < 0) {
return this.videoList.length - 1;
} else if (index >= this.videoList.length) {
return 0;
}
return index;
},
getNextDataIndex(isNext) {
let index = this._videoDataIndex + (isNext ? 1 : -1);
if (index < 0) {
return this.videoDataList.length - 1;
} else if (index >= this.videoDataList.length) {
return 0;
}
return index;
},
updateVideo(isNext) {
this.$set(this.videoList[this._videoIndex], "src", this.videoDataList[this._videoDataIndex].src);
this.$set(this.videoList[this.getNextIndex(isNext)], "src", this.videoDataList[this.getNextDataIndex(isNext)].src);
setTimeout(() => {
this._videoContextList[this._videoIndex].play();
}, 200);
console.log("v:" + this._videoIndex + " d:" + this._videoDataIndex + "; next v:" + this.getNextIndex(
isNext
) + " next d:" + this.getNextDataIndex(isNext));
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($data.videoList, (item, k0, i0) => {
return {
a: item.id,
b: item.id,
c: item.src,
d: item.id
};
}),
b: $data.circular,
c: common_vendor.o((...args) => $options.onSwiperChange && $options.onSwiperChange(...args))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "E:/xianyu/app/greenPro/pages/template/swiper-vertical/swiper-vertical.nvue"]]);
wx.createPage(MiniProgramPage);