|
@@ -9,17 +9,21 @@ import { useAppStore } from '../../store';
|
|
|
// const { API_VIEW_PREVIEW_POST } = useRequest()
|
|
|
const useSystem = useAppStore();
|
|
|
export default function useWheel(
|
|
|
- containerEl,
|
|
|
- partUrl,
|
|
|
+ containerEl: any,
|
|
|
+ // partUrl: any,
|
|
|
className = '.ps-video'
|
|
|
) {
|
|
|
const container = containerEl;
|
|
|
- const scaleEle: any = document.querySelector(className + partUrl.UUID);
|
|
|
+ const scaleEle: any = document.querySelector(className);
|
|
|
+ const transformN = scaleEle.style.transform;
|
|
|
+ console.log('container', container);
|
|
|
+ console.log('scaleEle', scaleEle);
|
|
|
+
|
|
|
let x = 0;
|
|
|
let y = 0;
|
|
|
let scale = 1;
|
|
|
- let scaleEleW = 806;
|
|
|
- let scaleEleH = 453;
|
|
|
+ let scaleEleW = container.offsetWidth;
|
|
|
+ let scaleEleH = container.offsetHeight;
|
|
|
let minScale = 1;
|
|
|
let maxScale = 20;
|
|
|
let isDown = false; // 按下标识
|
|
@@ -28,7 +32,9 @@ export default function useWheel(
|
|
|
let offsetY = 0;
|
|
|
|
|
|
// 滚轮缩放、放大逻辑
|
|
|
- const wheelHandle = (e) => {
|
|
|
+ const wheelHandle = (e: any) => {
|
|
|
+ console.log(123);
|
|
|
+
|
|
|
let ratio = 1.1;
|
|
|
// 缩小
|
|
|
if (e.deltaY > 0) {
|
|
@@ -36,6 +42,7 @@ export default function useWheel(
|
|
|
}
|
|
|
// 限制缩放倍数
|
|
|
const onscale = scale * ratio;
|
|
|
+
|
|
|
if (onscale > maxScale) {
|
|
|
ratio = maxScale / scale;
|
|
|
scale = maxScale;
|
|
@@ -74,20 +81,24 @@ export default function useWheel(
|
|
|
);
|
|
|
x = offsetX;
|
|
|
y = offsetY;
|
|
|
- scaleEle.style.transform = `matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
+
|
|
|
+ scaleEle.style.transform = `${transformN}matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
};
|
|
|
- const mousemoveHandle = (e) => {
|
|
|
- const transformStyle = scaleEle.style.transform;
|
|
|
+ const mousemoveHandle = (e: any) => {
|
|
|
+ if (isDown) {
|
|
|
+ const transformStyle = scaleEle.style.transform;
|
|
|
|
|
|
- // 解析矩阵的缩放值
|
|
|
- const matrixValues = transformStyle.split('(')[1].split(')')[0].split(',');
|
|
|
- const mscaleX = parseFloat(matrixValues[0]);
|
|
|
- const mscaleY = parseFloat(matrixValues[3]);
|
|
|
+ // 解析矩阵的缩放值
|
|
|
+ const matrixValues = transformStyle
|
|
|
+ .split('(')[2]
|
|
|
+ .split(')')[0]
|
|
|
+ .split(',');
|
|
|
+ const mscaleX = parseFloat(matrixValues[0]);
|
|
|
+ const mscaleY = parseFloat(matrixValues[3]);
|
|
|
|
|
|
- // 计算实际宽度
|
|
|
- scaleEleW = scaleEle.offsetWidth * mscaleX;
|
|
|
- scaleEleH = scaleEle.offsetHeight * mscaleY;
|
|
|
- if (isDown) {
|
|
|
+ // 计算实际宽度
|
|
|
+ scaleEleW = scaleEle.offsetWidth * mscaleX;
|
|
|
+ scaleEleH = scaleEle.offsetHeight * mscaleY;
|
|
|
if (scale === 1) return;
|
|
|
const moveX = e.offsetX - lastPointermove.x;
|
|
|
const moveY = e.offsetY - lastPointermove.y;
|
|
@@ -120,26 +131,26 @@ export default function useWheel(
|
|
|
}
|
|
|
x = offsetX;
|
|
|
y = offsetY;
|
|
|
- scaleEle.style.transform = `matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
+ scaleEle.style.transform = `${transformN}matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const params = {
|
|
|
- ...partUrl,
|
|
|
- };
|
|
|
- // 全景更新细节初始化x y
|
|
|
- watch(
|
|
|
- () => useSystem.partObj,
|
|
|
- (newV: any) => {
|
|
|
- params.PartCenterX = newV.PartCenterX;
|
|
|
- params.PartCenterY = newV.PartCenterY;
|
|
|
- },
|
|
|
- { deep: true }
|
|
|
- );
|
|
|
+ // const params = {
|
|
|
+ // ...partUrl,
|
|
|
+ // };
|
|
|
+ // // 全景更新细节初始化x y
|
|
|
+ // watch(
|
|
|
+ // () => useSystem.partObj,
|
|
|
+ // (newV: any) => {
|
|
|
+ // params.PartCenterX = newV.PartCenterX;
|
|
|
+ // params.PartCenterY = newV.PartCenterY;
|
|
|
+ // },
|
|
|
+ // { deep: true }
|
|
|
+ // );
|
|
|
const mouseupHandle = () => {
|
|
|
isDown = false;
|
|
|
};
|
|
|
- const mousedownHandle = (e) => {
|
|
|
+ const mousedownHandle = (e: any) => {
|
|
|
e.preventDefault();
|
|
|
isDown = true;
|
|
|
lastPointermove = { x: e.offsetX, y: e.offsetY };
|
|
@@ -159,11 +170,11 @@ export default function useWheel(
|
|
|
lastPointermove = { x: 0, y: 0 }; // 用于计算鼠标移动距离
|
|
|
offsetX = 0;
|
|
|
offsetY = 0;
|
|
|
- scaleEle.style.transform = `matrix(1, 0, 0, 1, 0, 0)`;
|
|
|
+ scaleEle.style.transform = `${transformN}matrix(1, 0, 0, 1, 0, 0)`;
|
|
|
}
|
|
|
);
|
|
|
|
|
|
- scaleEle.style.transform = `matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
+ scaleEle.style.transform = `${transformN}matrix(${scale}, 0, 0, ${scale}, ${offsetX}, ${offsetY})`;
|
|
|
// 拖拽查看
|
|
|
// 绑定鼠标点击
|
|
|
container.addEventListener('mousedown', mousedownHandle, false);
|