shaogen1995 10 mēneši atpakaļ
vecāks
revīzija
f4c3b4426f
88 mainītis faili ar 1195 papildinājumiem un 188 dzēšanām
  1. 54 46
      Code/public/myData/myData.js
  2. 7 0
      Code/src/App.tsx
  3. 0 25
      Code/src/assets/styles/base.css
  4. 0 31
      Code/src/assets/styles/base.less
  5. 2 0
      Code/src/components/CatVideo/index.module.scss
  6. 3 4
      Code/src/components/CatVideo/index.tsx
  7. 4 4
      Code/src/components/EndVideo/index.tsx
  8. 155 1
      Code/src/pages/A1_1base/index.module.scss
  9. 111 26
      Code/src/pages/A1_1base/index.tsx
  10. 1 0
      Code/src/pages/A2visit/PanoVideo/index.tsx
  11. 11 8
      Code/src/pages/A2visit/index.tsx
  12. 9 0
      Code/src/pages/A2visit2/A22Pano/index.module.scss
  13. 9 0
      Code/src/pages/A2visit2/A22Pano/index.tsx
  14. 218 0
      Code/src/pages/A2visit2/index.module.scss
  15. 252 0
      Code/src/pages/A2visit2/index.tsx
  16. 1 0
      Code/src/pages/A3banquet/PanoImg/index.tsx
  17. 0 1
      Code/src/pages/A3banquet/index.tsx
  18. 17 20
      Code/src/pages/A4dance/index.tsx
  19. 1 0
      Code/src/pages/A5chef/index.tsx
  20. 68 1
      Code/src/pages/A6plow/index.module.scss
  21. 102 12
      Code/src/pages/A6plow/index.tsx
  22. 6 0
      Code/src/pages/A6xian/A6PanoVideo/index.module.scss
  23. 9 0
      Code/src/pages/A6xian/A6PanoVideo/index.tsx
  24. 49 0
      Code/src/pages/A6xian/index.module.scss
  25. 84 0
      Code/src/pages/A6xian/index.tsx
  26. 0 1
      Code/src/pages/B1more/S2mien/index.tsx
  27. 3 3
      Code/src/pages/B1more/index.tsx
  28. 4 0
      Code/src/pages/C2unityEnd/index.tsx
  29. 15 5
      Code/src/types/declaration.d.ts
  30. BIN
      资源/staticData/banquet/1.mp4
  31. BIN
      资源/staticData/banquet/bg.jpg
  32. BIN
      资源/staticData/banquet/end.mp4
  33. BIN
      资源/staticData/base/ban.png
  34. BIN
      资源/staticData/base/bi1.png
  35. BIN
      资源/staticData/base/end.mp4
  36. BIN
      资源/staticData/base/tie1.mp4
  37. BIN
      资源/staticData/base/tie2.mp4
  38. BIN
      资源/staticData/base/tieBg.jpg
  39. BIN
      资源/staticData/base/txt1.png
  40. BIN
      资源/staticData/base/txt1Ac.png
  41. BIN
      资源/staticData/base/txt2.png
  42. BIN
      资源/staticData/base/txt2Ac.png
  43. BIN
      资源/staticData/chef/bg.jpg
  44. BIN
      资源/staticData/chef/end.mp4
  45. BIN
      资源/staticData/dance/3.mp4
  46. BIN
      资源/staticData/dance/4.mp4
  47. BIN
      资源/staticData/dance/5.mp4
  48. BIN
      资源/staticData/dance/6.mp4
  49. BIN
      资源/staticData/dance/7.png
  50. BIN
      资源/staticData/dance/8.mp4
  51. BIN
      资源/staticData/dance/end.mp4
  52. BIN
      资源/staticData/dance/2.mp4
  53. 0 0
      资源/staticData/dance/伴奏.png
  54. BIN
      资源/staticData/dance/1.mp4
  55. 0 0
      资源/staticData/dance/击鼓.png
  56. BIN
      资源/staticData/home/end.mp4
  57. BIN
      资源/staticData/plow/1.mp4
  58. BIN
      资源/staticData/plow/2.mp4
  59. BIN
      资源/staticData/plow/3.mp4
  60. BIN
      资源/staticData/plow/4.mp4
  61. BIN
      资源/staticData/plow/5.mp4
  62. BIN
      资源/staticData/plow/bg.jpg
  63. BIN
      资源/staticData/plow/end.mp4
  64. BIN
      资源/staticData/plow/sBg.jpg
  65. BIN
      资源/staticData/dance/7.mp4
  66. BIN
      资源/staticData/plow/蔬菜.mp4
  67. BIN
      资源/staticData/visit/bg.jpg
  68. BIN
      资源/staticData/visit/end.mp4
  69. BIN
      资源/staticData/visit2/waiBg.jpg
  70. BIN
      资源/staticData/visit2/吹火.mp4
  71. 0 0
      资源/staticData/visit2/吹火.png
  72. BIN
      资源/staticData/visit2/女宾.mp4
  73. BIN
      资源/staticData/visit2/掷丸.mp4
  74. 0 0
      资源/staticData/visit2/掷丸.png
  75. BIN
      资源/staticData/visit2/相扑.mp4
  76. 0 0
      资源/staticData/visit2/相扑.png
  77. BIN
      资源/staticData/visit2/贵宾.mp4
  78. BIN
      资源/staticData/visit2/踏鼓舞.mp4
  79. 0 0
      资源/staticData/visit2/踏鼓舞.png
  80. BIN
      资源/staticData/visit2/进入室内.mp4
  81. BIN
      资源/staticData/visit2/进入院落.mp4
  82. BIN
      资源/staticData/visit2/门生.mp4
  83. BIN
      资源/staticData/visit2/顶棍.mp4
  84. 0 0
      资源/staticData/visit2/顶棍.png
  85. BIN
      资源/staticData/xianJu/1.mp4
  86. BIN
      资源/staticData/xianJu/bg.jpg
  87. BIN
      资源/staticData/xianJu/end.mp4
  88. BIN
      资源/staticData/xianJu/mulu.png

+ 54 - 46
Code/public/myData/myData.js

@@ -388,7 +388,9 @@ const visitHotArr = [
 
 // 主客宴请热点信息(后面的更多模块也会复用)
 const banquetHotArr = [
+  // 待完善 louType 字段
   {
+    louType: '1',
     // 热点名字
     name: '汉代坐姿',
     // 热点大小
@@ -1335,12 +1337,39 @@ const danceHotArr = [
 
 // 田间耕作(后面的更多模块也会复用)
 const plowHotArr = [
-  // 陶井,5个模块都有
+  {
+    // 蔬菜的热点
+    isSSS: true,
+    // 热点名字
+    name: '犁地sss',
+    // 热点图片路径+名字
+    hoverSrc: 'plow/hot/hot2.png',
+    // 热点定位百分比(当前页面)
+    locPage: {
+      top: '47%',
+      left: '38%'
+    },
+    // 热点定位百分比(更多页面)
+    loc: {
+      top: '17%',
+      left: '23%'
+    },
+    data: [
+      {
+        name: '犁地',
+        txt: `
+      <p>在汉代,农耕是农业生产的基础,而整地是其中至关重要的一个步骤。整地通常包括四个主要环节:耕地、耙地、耱地以及开沟起垄。</p>
+      `,
+        imgArr: ['plow/hot/53.png']
+      }
+    ]
+  },
+  // 陶井
   {
     //是否是文物
     isModel: true,
-    // 一直存在
-    isChang: true,
+    // 蔬菜的热点
+    isSSS: true,
     // 热点名字
     name: '陶井',
     // 热点图片路径+名字
@@ -1567,7 +1596,7 @@ moreHotArr = moreHotArr.filter(v => !v.noShow)
 const myDataTemp = {
   // 开发调试为 false  正式上线为  true
   // 开发调试的时候 取消所有加载进度条 所有的视频动画都加上跳过按钮
-  isLdong: true,
+  isLdong: false,
 
   // 首页(静态资源目录位置:staticData/home)
   home: {
@@ -1599,6 +1628,15 @@ const myDataTemp = {
     hot: visitHotArr
   },
 
+  // 车骑拜谒(静态资源目录位置:staticData/visit2)
+  visit2: {
+    进入室内: 'visit2/进入室内.mp4',
+    进入院落: 'visit2/进入院落.mp4',
+    btnArr: ['贵宾', '门生', '女宾'],
+    baiXiBg: 'visit2/waiBg.jpg',
+    baixiArr: ['吹火', '顶棍', '踏鼓舞', '相扑', '掷丸']
+  },
+
   // 主客宴请(静态资源目录位置:staticData/banquet)
   banquet: {
     // 背景图路径+名字
@@ -1615,48 +1653,7 @@ const myDataTemp = {
     hot: danceHotArr,
 
     // 底部动作
-    floor: [
-      {
-        name: '击鼓',
-        hoverSrc: 'dance/1.png',
-        videoSrc: 'dance/1.mp4'
-      },
-      {
-        name: '伴奏',
-        hoverSrc: 'dance/2.png',
-        videoSrc: 'dance/2.mp4'
-      },
-      {
-        name: '盘鼓舞',
-        hoverSrc: 'dance/3.png',
-        videoSrc: 'dance/3.mp4'
-      },
-      {
-        name: '吐火',
-        hoverSrc: 'dance/4.png',
-        videoSrc: 'dance/4.mp4'
-      },
-      {
-        name: '顶棍',
-        hoverSrc: 'dance/5.png',
-        videoSrc: 'dance/5.mp4'
-      },
-      {
-        name: '掷丸',
-        hoverSrc: 'dance/6.png',
-        videoSrc: 'dance/6.mp4'
-      },
-      {
-        name: '杂技',
-        hoverSrc: 'dance/7.png',
-        videoSrc: 'dance/7.mp4'
-      },
-      {
-        name: '相扑',
-        hoverSrc: 'dance/8.png',
-        videoSrc: 'dance/8.mp4'
-      }
-    ],
+    floor: ['伴奏', '击鼓'],
 
     // 最后的过场动画路径+名字
     lastVideo: 'dance/end.mp4'
@@ -1938,6 +1935,8 @@ const myDataTemp = {
     lastVideo: 'plow/end.mp4',
     // 初始背景图路径+名字
     baseImg: 'plow/bg.jpg',
+    flooBtn: ['蔬菜', '庄稼'],
+    isSSSArr: plowHotArr.filter(v => v.isSSS),
     // 主要信息
     info: [
       {
@@ -1997,6 +1996,15 @@ const myDataTemp = {
       }
     ]
   },
+  // 仙居(静态资源目录位置:staticData/xianJu)
+  xianJu: {
+    // 背景图路径+名字
+    bgImg: 'xianJu/bg.jpg',
+    // 过度视频
+    videos: ['xianJu/1.mp4'],
+    // 最后的过场动画路径+名字
+    lastVideo: 'xianJu/end.mp4'
+  },
   // 尾声(静态资源目录位置:staticData/end)
   end: {
     // 初始背景图路径+名字

+ 7 - 0
Code/src/App.tsx

@@ -16,10 +16,15 @@ import { baseURL, myData } from './utils/http'
 const A1home = React.lazy(() => import('./pages/A1home'))
 const A1_1base = React.lazy(() => import('./pages/A1_1base'))
 const A2visit = React.lazy(() => import('./pages/A2visit'))
+const A2visit2 = React.lazy(() => import('./pages/A2visit2'))
 const A3banquet = React.lazy(() => import('./pages/A3banquet'))
 const A4dance = React.lazy(() => import('./pages/A4dance'))
 const A5chef = React.lazy(() => import('./pages/A5chef'))
 const A6plow = React.lazy(() => import('./pages/A6plow'))
+
+// 新的仙居
+const A6xian = React.lazy(() => import('./pages/A6xian'))
+
 const A7end = React.lazy(() => import('./pages/A7end'))
 const B1more = React.lazy(() => import('./pages/B1more'))
 
@@ -157,10 +162,12 @@ export default function App() {
             <Route path='/' component={A1home} exact />
             <Route path='/base' component={A1_1base} exact />
             <Route path='/visit' component={A2visit} exact />
+            <Route path='/visit2' component={A2visit2} exact />
             <Route path='/banquet' component={A3banquet} exact />
             <Route path='/dance' component={A4dance} exact />
             <Route path='/chef' component={A5chef} exact />
             <Route path='/plow' component={A6plow} exact />
+            <Route path='/xianJu' component={A6xian} exact />
             <Route path='/end' component={A7end} exact />
             <Route path='/more' component={B1more} exact />
             <Route path='/hots' component={B2hots} exact />

+ 0 - 25
Code/src/assets/styles/base.css

@@ -163,31 +163,6 @@ textarea {
     opacity: 1;
   }
 }
-#xuanQuan {
-  animation: xuanQuan 2s infinite linear;
-}
-@keyframes xuanQuan {
-  0% {
-    transform: rotate(0deg);
-  }
-  100% {
-    transform: rotate(-360deg);
-  }
-}
-#baseHuXi {
-  animation: baseHuXi 2s infinite linear;
-}
-@keyframes baseHuXi {
-  0% {
-    opacity: 1;
-  }
-  50% {
-    opacity: 0.2;
-  }
-  100% {
-    opacity: 1;
-  }
-}
 #bgImgBox {
   position: absolute;
   top: 0;

+ 0 - 31
Code/src/assets/styles/base.less

@@ -199,37 +199,6 @@ textarea {
   }
 }
 
-// base页面的圈圈转动、、按钮呼吸灯
-#xuanQuan {
-  animation: xuanQuan 2s infinite linear;
-}
-@keyframes xuanQuan {
-  0% {
-    transform: rotate(0deg);
-  }
-
-  100% {
-    transform: rotate(-360deg);
-  }
-}
-
-#baseHuXi {
-  animation: baseHuXi 2s infinite linear;
-}
-@keyframes baseHuXi {
-  0% {
-    opacity: 1;
-  }
-
-  50% {
-    opacity: 0.2;
-  }
-
-  100% {
-    opacity: 1;
-  }
-}
-
 #bgImgBox {
   position: absolute;
   top: 0;

+ 2 - 0
Code/src/components/CatVideo/index.module.scss

@@ -4,6 +4,8 @@
   position: absolute;
   z-index: 10;
   opacity: 1;
+  top: 0;
+  left: 0;
   // :global {
 
   // }

+ 3 - 4
Code/src/components/CatVideo/index.tsx

@@ -3,7 +3,6 @@ import styles from './index.module.scss'
 import classNames from 'classnames'
 import { domDelOwnFu } from '@/utils/utilsSome'
 import BtnRight from '../BtnRight'
-import { myData } from '@/utils/http'
 
 type Props = {
   isShow: boolean
@@ -46,9 +45,9 @@ function CatVideo({ isShow, src, parentFu, noBtn }: Props) {
       </video>
 
       {/* 右下角的跳过按钮 */}
-      {noBtn && myData.isLdong ? null : (
-        <BtnRight imgName='skip' clickSon={() => playEndFu()} title='跳过' />
-      )}
+      <BtnRight imgName='skip' clickSon={() => playEndFu()} title='跳过' />
+      {/* {noBtn && myData.isLdong ? null : (
+      )} */}
     </div>
   )
 }

+ 4 - 4
Code/src/components/EndVideo/index.tsx

@@ -4,7 +4,7 @@ import classNames from 'classnames'
 import { domDelOwnFu } from '@/utils/utilsSome'
 import history from '@/utils/history'
 import BtnRight from '../BtnRight'
-import { myData } from '@/utils/http'
+// import { myData } from '@/utils/http'
 
 type Props = {
   lastVideo: boolean //是否显示
@@ -50,9 +50,9 @@ function EndVideo({ lastVideo, delDom, src, path, noBtn }: Props) {
       </video>
 
       {/* 右下角的跳过按钮 */}
-      {noBtn && myData.isLdong ? null : (
-        <BtnRight imgName='skip' clickSon={() => history.push(path)} title='跳过' />
-      )}
+      <BtnRight imgName='skip' clickSon={() => history.push(path)} title='跳过' />
+      {/* {noBtn && myData.isLdong ? null : (
+      )} */}
     </div>
   )
 }

+ 155 - 1
Code/src/pages/A1_1base/index.module.scss

@@ -40,7 +40,6 @@
             width: 100%;
             text-align: center;
             position: relative;
-            right: 3px;
           }
           &:hover {
             & > div {
@@ -50,6 +49,161 @@
           }
         }
       }
+
+      // 加载进度条
+      .A11xian {
+        position: absolute;
+        bottom: 10%;
+        left: 50%;
+        transform: translateX(-50%);
+        width: 100px;
+        padding: 0 10px;
+        height: 2px;
+        & > div {
+          width: 100%;
+          height: 100%;
+          background-color: rgba(231, 214, 142, 0.6);
+          & > div {
+            width: 0%;
+            height: 100%;
+
+            background-color: #fffddc;
+          }
+        }
+      }
+    }
+
+    // 名帖信息
+    .A11Tit {
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 100%;
+      height: 100%;
+      opacity: 0;
+      pointer-events: none;
+      z-index: 10;
+      transition: all 0.5s;
+      // 第一个页面
+      & > div {
+        width: 100%;
+        height: 100%;
+        position: absolute;
+        top: 0;
+        left: 0;
+        z-index: 10;
+        .t1Bg {
+          width: 100%;
+          height: 100%;
+          object-fit: fill !important;
+        }
+        .t1Bi1 {
+          cursor: pointer;
+          height: 60%;
+          position: absolute;
+          z-index: 10;
+          right: 18%;
+          bottom: 18%;
+          transition: all 0.3s;
+          &:hover {
+            transform: scale(1.05);
+          }
+        }
+      }
+      // 第二个页面
+      .A11TitSon {
+        z-index: 11;
+        background-color: rgba(57, 38, 1, 0.9);
+        transition: all 0.5s;
+
+        .A11TitSon1 {
+          height: 68%;
+          position: absolute;
+          bottom: 13%;
+          left: 50%;
+          transform: translateX(-50%);
+          object-fit: fill !important;
+        }
+        .A11TitSon2 {
+          position: absolute;
+          bottom: 6%;
+          left: 50.3%;
+          transform: translateX(-50%);
+          font-size: 18px;
+          color: #ffdf89;
+        }
+        .A11TitSonTxt {
+          position: absolute;
+          z-index: 11;
+          left: 16%;
+          top: 26%;
+          cursor: pointer;
+          width: 215px;
+          height: 50px;
+          & > img {
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            object-fit: fill !important;
+            transition: all 0.5s;
+            opacity: 1;
+            &:nth-of-type(2) {
+              opacity: 0;
+            }
+          }
+          &:hover {
+            & > img {
+              &:nth-of-type(1) {
+                opacity: 0;
+              }
+              &:nth-of-type(2) {
+                opacity: 1;
+              }
+            }
+          }
+        }
+        .A11TitSonTxt2 {
+          position: absolute;
+          z-index: 11;
+          right: 16%;
+          bottom: 32%;
+          cursor: pointer;
+          width: 215px;
+          height: 50px;
+          & > img {
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            object-fit: fill !important;
+            transition: all 0.5s;
+            opacity: 1;
+            &:nth-of-type(2) {
+              opacity: 0;
+            }
+          }
+          &:hover {
+            & > img {
+              &:nth-of-type(1) {
+                opacity: 0;
+              }
+              &:nth-of-type(2) {
+                opacity: 1;
+              }
+            }
+          }
+        }
+        #BtnRight {
+          bottom: 60px;
+        }
+      }
+    }
+    .A11TitShow {
+      opacity: 1;
+      pointer-events: auto;
     }
   }
 }

+ 111 - 26
Code/src/pages/A1_1base/index.tsx

@@ -1,52 +1,137 @@
-import React, { useCallback, useState } from 'react'
+import React, { useCallback, useEffect, useRef, useState } from 'react'
 import styles from './index.module.scss'
 import { baseURL, myData } from '@/utils/http'
 import classNames from 'classnames'
 import EndVideo from '@/components/EndVideo'
 import useLoding from '@/components/ownUse/useLoding'
+import BtnRight from '@/components/BtnRight'
+import CatVideo from '@/components/CatVideo'
 
 function A11base() {
+  // 先加载背景图 序列帧等 在加载视频
+  const { imgNow, imgNumFu } = useLoding(2)
+
+  const [loding, setLoding] = useState(myData.isLdong ? 0 : 100)
+
+  const timeRR = useRef(-1)
+
+  useEffect(() => {
+    if (imgNow) {
+      clearInterval(timeRR.current)
+      timeRR.current = window.setInterval(() => {
+        if (loding >= 100) {
+          clearInterval(timeRR.current)
+          return
+        }
+        setLoding(loding + 2)
+      }, 30)
+    }
+  }, [imgNow, loding])
+
   // 最后一个过长动画
   const [lastVideo, setLastVideo] = useState(false)
 
-  // 先加载背景图 序列帧等 在加载视频
-  const { imgNow, imgNumFu } = useLoding(3)
-
-  // 点击开始
+  // 名帖视频播放之后,或者点击跳过
   const btnStartFu = useCallback(() => {
     // 播放长视频
     setLastVideo(true)
   }, [])
 
+  // 点击开始
+  const btnSta = useCallback(() => {
+    setTieShow(true)
+  }, [])
+
+  // 名帖信息展示
+  const [tieShow, setTieShow] = useState(false)
+
+  // 名帖1点击毛笔
+  const [biShow, setBiShow] = useState(false)
+
+  // 2个名帖视频路径
+  const [tieVideoSrc, setTieVideoSrc] = useState('')
+
   return (
     <div className={styles.A11base}>
       {/* 背景图页面 */}
-      <div
-        className={classNames('A11bg')}
-        style={{ backgroundImage: `url(${baseURL + myData.base.bgImg})` }}
-      >
-        <img onLoad={imgNumFu} id='bgImgBox' src={baseURL + myData.base.bgImg} alt='' />
-
-        <img onLoad={imgNumFu} className='A11Vlogo' src={`${baseURL}home/logo.png`} alt='' />
-
-        {/* 按钮 */}
-        <div className='A11btn'>
-          <div onClick={btnStartFu}>
-            <img id='xuanQuan' onLoad={imgNumFu} src={`${baseURL}base/quan.png`} alt='' />
-            <div id='baseHuXi'>点击开始</div>
+      {!tieVideoSrc ? (
+        <div className={classNames('A11bg')}>
+          <img onLoad={imgNumFu} id='bgImgBox' src={baseURL + myData.base.bgImg} alt='' />
+
+          <img onLoad={imgNumFu} className='A11Vlogo' src={`${baseURL}home/logo.png`} alt='' />
+
+          {loding >= 100 ? (
+            <div className='A11btn'>
+              {/* 按钮 */}
+              <div onClick={btnSta}>
+                <div>点击开始{imgNow}</div>
+              </div>
+            </div>
+          ) : (
+            <div className='A11xian'>
+              <div>
+                <div style={{ width: loding + '%' }}></div>
+              </div>
+            </div>
+          )}
+        </div>
+      ) : null}
+
+      {/* 名帖信息 */}
+      {imgNow && !tieVideoSrc ? (
+        <div className={classNames('A11Tit', tieShow ? 'A11TitShow' : '')}>
+          <div>
+            <img className='t1Bg' src={`${baseURL}base/tieBg.jpg`} alt='' />
+            <img
+              onClick={() => setBiShow(true)}
+              className='t1Bi1'
+              src={`${baseURL}base/bi1.png`}
+              alt=''
+            />
+            <BtnRight title='返回' clickSon={() => setTieShow(false)} imgName='back' />
+          </div>
+
+          {/* 名帖2 */}
+          <div
+            className='A11TitSon'
+            style={{ opacity: biShow ? '1' : '0', pointerEvents: biShow ? 'auto' : 'none' }}
+          >
+            <img className='A11TitSon1' src={`${baseURL}base/ban.png`} alt='' />
+            <p className='A11TitSon2'>请选择内容</p>
+
+            <div className='A11TitSonTxt' onClick={() => setTieVideoSrc('tie1')}>
+              <img src={`${baseURL}base/txt1.png`} alt='' />
+              <img src={`${baseURL}base/txt1Ac.png`} alt='' />
+            </div>
+            <div className='A11TitSonTxt2' onClick={() => setTieVideoSrc('tie2')}>
+              <img src={`${baseURL}base/txt2.png`} alt='' />
+              <img src={`${baseURL}base/txt2Ac.png`} alt='' />
+            </div>
+
+            <BtnRight title='返回' clickSon={() => setBiShow(false)} imgName='back' />
           </div>
         </div>
-      </div>
+      ) : null}
 
-      {/* 最后一个过长动画 */}
+      {/* 名帖动画 */}
+      {imgNow ? (
+        <>
+          <CatVideo
+            isShow={tieVideoSrc === 'tie1'}
+            src={baseURL + '/base/tie1.mp4'}
+            parentFu={() => btnStartFu()}
+          />
+          <CatVideo
+            isShow={tieVideoSrc === 'tie2'}
+            src={baseURL + '/base/tie2.mp4'}
+            parentFu={() => btnStartFu()}
+          />
+        </>
+      ) : null}
 
+      {/* 最后一个过长动画 */}
       {imgNow ? (
-        <EndVideo
-          lastVideo={lastVideo}
-          delDom='.A11bg'
-          src={baseURL + myData.base.lastVideo}
-          path='/visit'
-        />
+        <EndVideo lastVideo={lastVideo} src={baseURL + myData.base.lastVideo} path='/visit' />
       ) : null}
     </div>
   )

+ 1 - 0
Code/src/pages/A2visit/PanoVideo/index.tsx

@@ -24,6 +24,7 @@ function PanoVideo() {
 
   return (
     <>
+      {/* 待完善,更换成全景视频 */}
       <KrpanoMiddleware ref={middlewareIns}>
         <Krpano
           className={styles.PanoVideo}

+ 11 - 8
Code/src/pages/A2visit/index.tsx

@@ -8,7 +8,7 @@ import NextPage from '@/components/NextPage'
 import FloorBtn from '@/components/FloorBtn'
 import BaseImg from '@/components/BaseImg'
 import useLoding from '@/components/ownUse/useLoding'
-import CatVideo from '@/components/CatVideo'
+import { domDelOwnFu } from '@/utils/utilsSome'
 
 function A2visit() {
   // 过度动画
@@ -16,13 +16,16 @@ function A2visit() {
 
   // 点击继续
   const btnStart = useCallback(() => {
-    setCutVideoShow(true)
+    // setCutVideoShow(true)
+    // 修改逻辑 直接删除自己
+    domDelOwnFu('#BaseImg')
+    if (1 + 1 !== 2) console.log('---', setCutVideoShow)
   }, [])
 
   // 过度动画播放完毕或者点击跳过
-  const cutEndFu = useCallback(() => {
-    setCutVideoShow(false)
-  }, [])
+  // const cutEndFu = useCallback(() => {
+  //   setCutVideoShow(false)
+  // }, [])
 
   // 点击 跳下一个章节
   const [lastVideo, setLastVideo] = useState(false)
@@ -43,14 +46,14 @@ function A2visit() {
       />
 
       {/* 过度动画页面 */}
-      {imgNow ? (
+      {/* {imgNow ? (
         <CatVideo
           isShow={cutVideoShow}
           src={baseURL + myData.visit.videos[0]}
           parentFu={() => cutEndFu()}
           noBtn={true}
         />
-      ) : null}
+      ) : null} */}
 
       {/* 全景视频 */}
       {imgNow ? (
@@ -71,7 +74,7 @@ function A2visit() {
           lastVideo={lastVideo}
           delDom='.pvBox'
           src={baseURL + myData.visit.lastVideo}
-          path='/banquet'
+          path='/visit2'
         />
       ) : null}
     </div>

+ 9 - 0
Code/src/pages/A2visit2/A22Pano/index.module.scss

@@ -0,0 +1,9 @@
+.A22Pano {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  :global {
+  }
+}

+ 9 - 0
Code/src/pages/A2visit2/A22Pano/index.tsx

@@ -0,0 +1,9 @@
+import React from 'react'
+import styles from './index.module.scss'
+function A22Pano() {
+  return <div className={styles.A22Pano}>待完善,全景图页面</div>
+}
+
+const MemoA22Pano = React.memo(A22Pano)
+
+export default MemoA22Pano

+ 218 - 0
Code/src/pages/A2visit2/index.module.scss

@@ -0,0 +1,218 @@
+.A2visit2 {
+  position: relative;
+  :global {
+    video {
+      width: 100%;
+      height: 100%;
+      object-fit: fill;
+    }
+
+    .A22imgBox {
+      width: 100%;
+      height: 100%;
+      transition: all 0.5s;
+      position: relative;
+      z-index: 2;
+
+      // 3个视频
+      .A22videoBox {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+
+        .A22video {
+          position: absolute;
+          top: 0;
+          left: 0;
+          width: 100%;
+          height: 100%;
+          // transition: all 0.3s;
+        }
+      }
+
+      // 底部
+      .A22btn {
+        position: absolute;
+        z-index: 1;
+        left: 50%;
+        bottom: 15px;
+        transform: translateX(-50%);
+        display: flex;
+
+        .A22btnRow {
+          width: 50px;
+          height: 50px;
+          background-size: 100% 100%;
+          cursor: pointer;
+          transition: all 0.3s;
+          margin: 0 10px;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          font-size: 14px;
+          padding-bottom: 3px;
+          &:hover {
+            background-image: url('../../assets/img/leftAc.png') !important;
+            color: #bd7656 !important;
+          }
+        }
+      }
+
+      // 加载进度条
+      .A22xian {
+        position: absolute;
+        bottom: 10%;
+        left: 50%;
+        transform: translateX(-50%);
+        width: 100px;
+        padding: 0 10px;
+        height: 2px;
+        & > div {
+          width: 100%;
+          height: 100%;
+          background-color: rgba(231, 214, 142, 0.6);
+          & > div {
+            width: 0%;
+            height: 100%;
+
+            background-color: #fffddc;
+          }
+        }
+      }
+    }
+
+    // 全景图
+    .A22Pano {
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 100%;
+      height: 100%;
+      z-index: 1;
+      // 左下角按钮
+      .A22Pbtn {
+        cursor: pointer;
+        position: absolute;
+        z-index: 10;
+        bottom: 12px;
+        left: 50%;
+        transform: translateX(-50%);
+        width: 100px;
+        height: 32px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        color: #fffddc;
+        background-size: 100% 100%;
+        transition: transform 0.3s;
+        &:hover {
+          transform: translateX(-50%) scale(1.1);
+        }
+      }
+    }
+
+    // 百戏
+    .A22baiXi {
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 100%;
+      height: 100%;
+      z-index: 20;
+      background-size: 100% 100%;
+      #BtnRight {
+        bottom: 60px;
+      }
+
+      // 底部
+      .pvfloor {
+        position: absolute;
+        bottom: 0;
+        left: 50%;
+        transform: translateX(-50%);
+        display: flex;
+        z-index: 31;
+        .pvflRow {
+          width: 60px;
+          height: 70px;
+          position: relative;
+          cursor: pointer;
+          .pvflR1 {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+            z-index: 3;
+            top: 0;
+            left: 0;
+            background-size: 100% 100%;
+            transition: all 0.3s;
+            background-image: url('../../assets/img/Vector1.png');
+          }
+          .pvflR2 {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+            z-index: 2;
+            top: 0;
+            left: 0;
+            text-align: center;
+
+            & > img {
+              width: 50px;
+              height: auto;
+            }
+          }
+          .pvflR3 {
+            opacity: 0.3;
+            position: absolute;
+            bottom: 3px;
+            left: 50%;
+            transform: translateX(-50%);
+            width: 56px;
+            z-index: 4;
+            color: #fffddc;
+            font-size: 14px;
+            transition: all 0.3s;
+            text-align: center;
+          }
+          &:hover {
+            .pvflR1 {
+              z-index: 1;
+              background-image: url('../../assets/img/Vector2.png');
+            }
+            .pvflR3 {
+              opacity: 1;
+              background-image: url('../../assets/img/danceAc.png');
+              background-size: 100% auto;
+              background-repeat: no-repeat;
+              background-position: center;
+            }
+          }
+        }
+        .pvflRowAc {
+          .pvflR1 {
+            z-index: 1;
+            background-image: url('../../assets/img/Vector2.png');
+          }
+          .pvflR3 {
+            opacity: 1;
+            background-image: url('../../assets/img/danceAc.png');
+            background-size: 100% auto;
+            background-repeat: no-repeat;
+            background-position: center;
+          }
+        }
+      }
+
+      // 视频
+      .A22BvideoBox {
+        transition: all 0.3s;
+        position: absolute;
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+}

+ 252 - 0
Code/src/pages/A2visit2/index.tsx

@@ -0,0 +1,252 @@
+import React, { useEffect, useRef, useState } from 'react'
+import styles from './index.module.scss'
+import { baseURL, myData } from '@/utils/http'
+import NextPage from '@/components/NextPage'
+import FloorBtn from '@/components/FloorBtn'
+import { domDelOwnFu } from '@/utils/utilsSome'
+import CatVideo from '@/components/CatVideo'
+import EndVideo from '@/components/EndVideo'
+import A22Pano from './A22Pano'
+import BtnRight from '@/components/BtnRight'
+import classNames from 'classnames'
+import history from '@/utils/history'
+
+function A2visit2() {
+  const [loding, setLoding] = useState(myData.isLdong ? 0 : 100)
+
+  const timeRR = useRef(-1)
+
+  useEffect(() => {
+    clearInterval(timeRR.current)
+    timeRR.current = window.setInterval(() => {
+      if (loding >= 100) {
+        clearInterval(timeRR.current)
+        return
+      }
+      setLoding(loding + 2)
+    }, 50)
+  }, [loding])
+
+  // 底部按钮选中
+  const [btnAc, setBtnAc] = useState('贵宾')
+
+  // 3个视频切换
+  const [videoPlay, setVideoPlay] = useState(false)
+  const videoRef = useRef<HTMLVideoElement>(null)
+
+  //  进入院落 全景图显示
+  const [panoShow, setPanoShow] = useState(false)
+
+  // 点击进入室内
+  const [toShi, setToShi] = useState(false)
+
+  // 点击观看百戏
+  const [baiXi, setBaiXi] = useState(false)
+
+  const [xiAc, setXiAc] = useState('')
+
+  return (
+    <div className={styles.A2visit2}>
+      <div
+        className='A22imgBox'
+        style={{ opacity: panoShow ? '0' : '1', pointerEvents: panoShow ? 'none' : 'auto' }}
+      >
+        {/* 底部按钮 */}
+        <div
+          className='A22btn'
+          style={{
+            opacity: loding < 100 ? '0' : '1',
+            pointerEvents: loding < 100 ? 'none' : 'auto'
+          }}
+        >
+          {myData.visit2.btnArr.map((item, index) => (
+            <div
+              onClick={() => {
+                setBtnAc(item)
+                setVideoPlay(true)
+                setTimeout(() => {
+                  if (videoRef.current) videoRef.current.play()
+                }, 100)
+              }}
+              key={index}
+              className='A22btnRow'
+              style={{
+                backgroundImage: `url(${baseURL}plow/left${btnAc === item ? 'Ac' : ''}.png)`,
+                color: btnAc === item ? '#BD7656' : '#DACB8B'
+              }}
+            >
+              {item}
+            </div>
+          ))}
+        </div>
+
+        {loding >= 100 ? (
+          // 进入院落
+          <NextPage
+            clickSon={() => {
+              setPanoShow(true)
+              setTimeout(() => {
+                domDelOwnFu('.A22imgBox')
+              }, 500)
+            }}
+            txt='进入院落'
+          />
+        ) : null}
+
+        {/* 3个视频 */}
+        <div className='A22videoBox' style={{ zIndex: videoPlay ? '2' : '0' }}>
+          {myData.visit2.btnArr.map((item, index) => (
+            <div key={index} className='A22video' style={{ opacity: btnAc === item ? 1 : 0 }}>
+              <video
+                ref={btnAc === item ? videoRef : null}
+                playsInline
+                muted
+                webkit-playsinline='true'
+                x5-video-player-type='h5'
+                onEnded={() => setVideoPlay(false)}
+              >
+                <source type='video/mp4' src={`${baseURL}visit2/${item}.mp4`} />
+                Your browser does not support the video tag.
+              </video>
+            </div>
+          ))}
+        </div>
+
+        {/* 加载进度条 */}
+        {loding >= 100 ? null : (
+          <div className='A22xian'>
+            <div>
+              <div style={{ width: loding + '%' }}></div>
+            </div>
+          </div>
+        )}
+      </div>
+
+      {/* 右下角按钮 */}
+      <FloorBtn
+        gameFu={
+          panoShow
+            ? () => {
+                history.push('/unend/game3')
+              }
+            : undefined
+        }
+      />
+
+      <CatVideo
+        isShow={panoShow}
+        src={baseURL + myData.visit2.进入院落}
+        parentFu={() => domDelOwnFu('#CatVideo')}
+      />
+
+      {/* 全景图页面 */}
+      <div className='A22Pano' style={{ opacity: panoShow ? '1' : '0' }}>
+        <A22Pano />
+        {/* 进入室内 */}
+        <NextPage clickSon={() => setToShi(true)} txt='进入室内' />
+
+        {/* 底部按钮 */}
+        <div
+          onClick={() => setBaiXi(true)}
+          className='A22Pbtn'
+          style={{ backgroundImage: `url(${baseURL}chef/chuBtn.png)` }}
+        >
+          观看百戏
+        </div>
+      </div>
+
+      {/* 室外看百戏 */}
+      <div
+        className='A22baiXi'
+        style={{
+          opacity: baiXi ? '1' : '0',
+          pointerEvents: baiXi ? 'auto' : 'none',
+          backgroundImage: `url(${baseURL + myData.visit2.baiXiBg})`
+        }}
+      >
+        {/* 进入室内 */}
+        <NextPage clickSon={() => setToShi(true)} txt='进入室内' />
+
+        {/* 百戏底部按钮 */}
+        <div className='pvfloor'>
+          {myData.visit2.baixiArr.map((item, index) => (
+            <div
+              key={index}
+              onClick={() => {
+                setXiAc(item)
+                setTimeout(() => {
+                  const doms: any = document.querySelectorAll('.A22Bvideo')
+                  if (doms) {
+                    doms.forEach((v: HTMLVideoElement, i: number) => {
+                      if (index === i) v.play()
+                      else {
+                        v.pause()
+                        v.currentTime = 0
+                      }
+                    })
+                  }
+                }, 100)
+              }}
+              className={classNames('pvflRow', xiAc === item ? 'pvflRowAc' : '')}
+            >
+              {/* 蒙版 */}
+              <div className='pvflR1'></div>
+              {/* 底图 */}
+              <div className='pvflR2'>
+                <img src={`${baseURL}visit2/${item}.png`} alt='' />
+              </div>
+
+              {/* 文字 */}
+              <div className='pvflR3'>{item}</div>
+            </div>
+          ))}
+        </div>
+
+        {myData.visit2.baixiArr.map(item => (
+          // 5个视频
+          <div
+            className='A22BvideoBox'
+            key={item}
+            style={{
+              opacity: xiAc === item ? '1' : '0',
+              pointerEvents: xiAc === item ? 'auto' : 'none'
+            }}
+          >
+            <video
+              className='A22Bvideo'
+              playsInline
+              muted
+              webkit-playsinline='true'
+              x5-video-player-type='h5'
+              loop={true}
+            >
+              <source type='video/mp4' src={`${baseURL}visit2/${item}.mp4`} />
+              Your browser does not support the video tag.
+            </video>
+          </div>
+        ))}
+
+        <BtnRight
+          title='返回'
+          clickSon={() => {
+            setBaiXi(false)
+            setXiAc('')
+          }}
+          imgName='back'
+        />
+      </div>
+
+      {/* 最后的视频 */}
+      <EndVideo
+        lastVideo={toShi}
+        src={baseURL + myData.visit2.进入室内}
+        path='/banquet'
+        delDom='.A22Pano'
+      />
+    </div>
+  )
+}
+
+const MemoA2visit2 = React.memo(A2visit2)
+
+export default MemoA2visit2

+ 1 - 0
Code/src/pages/A3banquet/PanoImg/index.tsx

@@ -68,6 +68,7 @@ function PanoImg() {
               vlookatMin={-90}
               vlookatMax={90}
             />
+            {/* 待完善 自己在的数据里面添加 字段louType 区分热点位置 1=一楼 2=2楼 3=庭院 */}
             {myData.banquet.hot.map((item, index) => (
               // 热点图标
               <HotSpot

+ 0 - 1
Code/src/pages/A3banquet/index.tsx

@@ -57,7 +57,6 @@ function A3banquet() {
       ) : null}
 
       {/* 全景图 */}
-
       {imgNow ? (
         <div className={classNames('pvBox', cutVideoShow ? '' : 'pvBoxShow')}>
           <PanoImg />

+ 17 - 20
Code/src/pages/A4dance/index.tsx

@@ -107,26 +107,23 @@ function A4dance() {
 
           {/* 底部 */}
           <div className='pvfloor'>
-            {myData.dance.floor.map((item, index) =>
-              // 直接去掉杂技
-              item.name === '杂技' ? null : (
-                <div
-                  key={index}
-                  onClick={() => setFloorAc(index)}
-                  className={classNames('pvflRow', floorAc === index ? 'pvflRowAc' : '')}
-                >
-                  {/* 蒙版 */}
-                  <div className='pvflR1'></div>
-                  {/* 底图 */}
-                  <div className='pvflR2'>
-                    <img src={baseURL + item.hoverSrc} alt='' />
-                  </div>
-
-                  {/* 文字 */}
-                  <div className='pvflR3'>{item.name}</div>
+            {myData.dance.floor.map((item, index) => (
+              <div
+                key={index}
+                onClick={() => setFloorAc(index)}
+                className={classNames('pvflRow', floorAc === index ? 'pvflRowAc' : '')}
+              >
+                {/* 蒙版 */}
+                <div className='pvflR1'></div>
+                {/* 底图 */}
+                <div className='pvflR2'>
+                  <img src={`${baseURL}dance/${item}.png`} alt='' />
                 </div>
-              )
-            )}
+
+                {/* 文字 */}
+                <div className='pvflR3'>{item}</div>
+              </div>
+            ))}
           </div>
 
           {/* 跳到下一章 */}
@@ -157,7 +154,7 @@ function A4dance() {
                     x5-video-player-type='h5'
                     loop
                   >
-                    <source type='video/mp4' src={baseURL + item.videoSrc} />
+                    <source type='video/mp4' src={`${baseURL}dance/${item}.mp4`} />
                     Your browser does not support the video tag.
                   </video>
                 </div>

+ 1 - 0
Code/src/pages/A5chef/index.tsx

@@ -11,6 +11,7 @@ import useLoding from '@/components/ownUse/useLoding'
 import BtnRight from '@/components/BtnRight'
 
 function A5chef() {
+  // 66666666 视频和热点
   // 点击继续
   const [baseFlag, setBaseFlag] = useState(true)
 

+ 68 - 1
Code/src/pages/A6plow/index.module.scss

@@ -5,6 +5,73 @@
       height: 100%;
       object-fit: fill;
     }
+
+    // ---------蔬菜
+    .A6SS {
+      position: absolute;
+      width: 100%;
+      height: 100%;
+      z-index: 10;
+      background-size: 100% 100%;
+    }
+
+    // 切换底部按钮的动画
+    .A6videoBoxsss {
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 100%;
+      height: 100%;
+      z-index: 50;
+      opacity: 0;
+      pointer-events: none;
+      // transition: all 1s;
+      #BtnRight {
+        bottom: 50px;
+      }
+    }
+    .A6videoBoxShowsss {
+      opacity: 1;
+      pointer-events: auto;
+    }
+
+    // 底部三个按钮
+    .A6floorBox {
+      position: absolute;
+      bottom: 20px;
+      left: 50%;
+      transform: translate(-50%);
+      display: flex;
+      z-index: 30;
+      transition: opacity 1s;
+
+      & > div {
+        width: 100px;
+        height: 36px;
+        background-size: 100% 100%;
+        transition: all 0.3s;
+        background-image: url('../../assets/img/icon-gengduo.png');
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        color: #fffddc;
+        margin-right: 10px;
+        cursor: pointer;
+        &:last-child {
+          margin-right: 0;
+        }
+
+        &:hover {
+          background-image: url('../../assets/img/icon-gengduo1.png');
+          color: #a55b41;
+        }
+      }
+      .A6FrowAc {
+        background-image: url('../../assets/img/icon-gengduo1.png');
+        color: #a55b41;
+      }
+    }
+
     // 主要内容
     .A6main {
       width: 100%;
@@ -50,7 +117,7 @@
       .A6txt {
         position: absolute;
         z-index: 11;
-        bottom: 0;
+        top: 0;
         left: 50%;
         transform: translateX(-50%);
         width: 66%;

+ 102 - 12
Code/src/pages/A6plow/index.tsx

@@ -58,24 +58,31 @@ function A6plow() {
     return myData.plow.info[leftAc].txt
   }, [leftAc])
 
+  // 先加载背景图 序列帧等 在加载视频
+  const { imgNow, imgNumFu } = useLoding(3)
+
+  // 汉代庄园田耕记二维码
+  const [code, setCode] = useState(false)
+
+  // 蔬菜-庄家切换
+  const [staCut, setStaCut] = useState('蔬菜')
+
+  // 切换底部的时候播放视频
+  const [btnVideo, setBtnVideo] = useState('')
+
   // 打开热点
   const [hotInd, setHotInd] = useState(-1)
 
   const hotInfo = useMemo(() => {
     let info = {} as PlowHotType
-    const temp = myData.plow.info[leftAc].hot
+
+    const temp = staCut === '蔬菜' ? myData.plow.isSSSArr : myData.plow.info[leftAc].hot
     if (temp && temp[hotInd]) {
       info = temp[hotInd]
     }
 
     return info
-  }, [hotInd, leftAc])
-
-  // 先加载背景图 序列帧等 在加载视频
-  const { imgNow, imgNumFu } = useLoding(3)
-
-  // 汉代庄园田耕记二维码
-  const [code, setCode] = useState(false)
+  }, [hotInd, leftAc, staCut])
 
   return (
     <div className={styles.A6plow}>
@@ -89,11 +96,93 @@ function A6plow() {
         imgNumFu={imgNumFu}
       />
 
-      {/* 主要内容 */}
+      {/* 蔬菜的盒子 */}
+      <div
+        className='A6SS'
+        hidden={staCut !== '蔬菜'}
+        style={{ backgroundImage: `url(${baseURL}plow/sBg.jpg)` }}
+      >
+        {/* 热点 */}
+        {myData.plow.isSSSArr.map((v: PlowHotType, i) => (
+          <HotIcon
+            isModel={v.isModel ? true : false}
+            style={{
+              top: v.locPage.top,
+              left: v.locPage.left
+            }}
+            key={i}
+            index={i}
+            clickSon={val => setHotInd(val)}
+            hoverSrc={v.hoverSrc}
+            isXiao={0.67}
+          />
+        ))}
+      </div>
+
+      {/* 切换底部按钮的动画 */}
+      {imgNow
+        ? myData.plow.flooBtn.map(item => (
+            <div
+              className={classNames('A6videoBoxsss', btnVideo === item ? 'A6videoBoxShowsss' : '')}
+              key={item}
+            >
+              <video
+                playsInline
+                muted
+                webkit-playsinline='true'
+                x5-video-player-type='h5'
+                onEnded={() => setBtnVideo('')}
+                src={`${baseURL}plow/${item}.mp4`}
+              >
+                <source type='video/mp4' src={`${baseURL}plow/${item}.mp4`} />
+                Your browser does not support the video tag.
+              </video>
+
+              {/* 右下角的跳过按钮 */}
+              <BtnRight imgName='skip' clickSon={() => setBtnVideo('')} title='跳过' />
+            </div>
+          ))
+        : null}
+
+      {/* 底部2个按钮 */}
+      {imgNow ? (
+        <div className='A6floorBox' hidden={!cutVideoShow}>
+          {myData.plow.flooBtn.map((v, i1) => (
+            <div
+              onClick={() => {
+                setStaCut(v)
+                setBtnVideo(v)
+                setTimeout(() => {
+                  const domAll: any = document.querySelectorAll('.A6videoBoxsss video')
+                  if (domAll && domAll.length) {
+                    domAll.forEach((v: HTMLVideoElement, i2: number) => {
+                      if (i1 === i2) v.play()
+                      else {
+                        v.pause()
+                        v.currentTime = 0
+                      }
+                    })
+                  }
+                }, 100)
+              }}
+              className={classNames(v === staCut ? 'A6FrowAc' : '')}
+              key={v}
+            >
+              {v}
+            </div>
+          ))}
+        </div>
+      ) : null}
+
+      {/*  庄稼 主要内容 */}
       {imgNow ? (
         <div className={classNames('A6main', cutVideoShow ? 'A6mainShow' : '')}>
           {/* 左侧title */}
-          <div className='A6Lbtn' style={{ backgroundImage: `url(${baseURL}plow/leftBg.png)` }}>
+          <div
+            className='A6Lbtn'
+            hidden={staCut !== '庄稼'}
+            style={{ backgroundImage: `url(${baseURL}plow/leftBg.png)` }}
+          >
             {myData.plow.info.map((item, index) => (
               <div
                 key={index}
@@ -111,6 +200,7 @@ function A6plow() {
 
           {/* 底部文字 */}
           <div
+            hidden={staCut !== '庄稼'}
             className='A6txt'
             style={{ backgroundImage: `url(${baseURL}plow/txtBg.png)` }}
             dangerouslySetInnerHTML={{ __html: floorTxt }}
@@ -163,7 +253,7 @@ function A6plow() {
           </div>
 
           {/* 跳到下一章 */}
-          <NextPage clickSon={() => setLastVideo(true)} txt='结束' />
+          <NextPage clickSon={() => setLastVideo(true)} txt='仙居' />
           {/* 右下角按钮 */}
           <FloorBtn plowFu={() => setCode(true)} />
         </div>
@@ -191,7 +281,7 @@ function A6plow() {
           lastVideo={lastVideo}
           delDom='.A6main'
           src={baseURL + myData.plow.lastVideo}
-          path='/end'
+          path='/xianJu'
           noBtn={true}
         />
       ) : null}

+ 6 - 0
Code/src/pages/A6xian/A6PanoVideo/index.module.scss

@@ -0,0 +1,6 @@
+.A6PanoVideo {
+  width: 100%;
+  height: 100%;
+  :global {
+  }
+}

+ 9 - 0
Code/src/pages/A6xian/A6PanoVideo/index.tsx

@@ -0,0 +1,9 @@
+import React from 'react'
+import styles from './index.module.scss'
+function A6PanoVideo() {
+  return <div className={styles.A6PanoVideo}>待完善,全景视频</div>
+}
+
+const MemoA6PanoVideo = React.memo(A6PanoVideo)
+
+export default MemoA6PanoVideo

+ 49 - 0
Code/src/pages/A6xian/index.module.scss

@@ -0,0 +1,49 @@
+.A6xian {
+  :global {
+    .pvBox {
+      position: absolute;
+      width: 100%;
+      height: 100%;
+      top: 0;
+      left: 0;
+      opacity: 0;
+      pointer-events: none;
+      transition: all 0.5s;
+      .pvBtn {
+        position: absolute;
+        bottom: 40px;
+        left: 50%;
+        transform: translateX(-50%);
+        cursor: pointer;
+        width: 120px;
+        height: 36px;
+        z-index: 10;
+        background-size: 100% 100%;
+        background-image: url('../../assets/img/btn.png');
+        color: #fffddc;
+        transition: all 0.3s;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        &:hover {
+          background-image: url('../../assets/img/btnAc.png');
+          color: #b67150;
+        }
+      }
+    }
+    .pvBoxShow {
+      opacity: 1;
+      pointer-events: auto;
+    }
+
+    .A6XimgBox {
+      position: absolute;
+      top: 0;
+      left: 0;
+      transition: all 0.5s;
+      width: 100%;
+      height: 100%;
+      z-index: 30;
+    }
+  }
+}

+ 84 - 0
Code/src/pages/A6xian/index.tsx

@@ -0,0 +1,84 @@
+import React, { useCallback, useState } from 'react'
+import styles from './index.module.scss'
+import BaseImg from '@/components/BaseImg'
+import { baseURL, myData } from '@/utils/http'
+import useLoding from '@/components/ownUse/useLoding'
+import CatVideo from '@/components/CatVideo'
+import A6PanoVideo from './A6PanoVideo'
+import classNames from 'classnames'
+import { domDelOwnFu } from '@/utils/utilsSome'
+
+function A6xian() {
+  // 过度动画
+  const [cutVideoShow, setCutVideoShow] = useState(false)
+
+  // 点击 跳下一个章节
+  const [lastVideo, setLastVideo] = useState(false)
+
+  // 点击继续
+  const btnStart = useCallback(() => {
+    setCutVideoShow(true)
+  }, [])
+
+  // 过度动画播放完毕或者点击跳过
+  const cutEndFu = useCallback(() => {
+    setCutVideoShow(false)
+  }, [])
+
+  // 先加载背景图 序列帧等 在加载视频
+  const { imgNow, imgNumFu } = useLoding(3)
+
+  // 点击升仙
+  const [xianShow, setXianShow] = useState(false)
+
+  return (
+    <div className={styles.A6xian}>
+      {/* 初始静态图 */}
+      <BaseImg
+        isShow={cutVideoShow}
+        iconSrc={`${baseURL}xianJu/mulu.png`}
+        parentFu={() => btnStart()}
+        bgImg={`${baseURL}${myData.xianJu.bgImg}`}
+        imgNow={imgNow}
+        imgNumFu={imgNumFu}
+        num={50}
+      />
+
+      {/* 过度动画页面 */}
+      {imgNow ? (
+        <CatVideo
+          isShow={cutVideoShow}
+          src={baseURL + myData.xianJu.videos[0]}
+          parentFu={() => cutEndFu()}
+        />
+      ) : null}
+
+      {/* 全景视频 */}
+      {imgNow ? (
+        <div className={classNames('pvBox', cutVideoShow ? '' : 'pvBoxShow')}>
+          <A6PanoVideo />
+          <div
+            className='pvBtn'
+            onClick={() => {
+              domDelOwnFu('.pvBox')
+              setXianShow(true)
+            }}
+          >
+            升仙之途
+          </div>
+        </div>
+      ) : null}
+
+      <div
+        className='A6XimgBox'
+        style={{ opacity: xianShow ? '1' : '0', pointerEvents: xianShow ? 'auto' : 'none' }}
+      >
+        4564654
+      </div>
+    </div>
+  )
+}
+
+const MemoA6xian = React.memo(A6xian)
+
+export default MemoA6xian

+ 0 - 1
Code/src/pages/B1more/S2mien/index.tsx

@@ -24,7 +24,6 @@ function S2mien({ hidden }: Props) {
   const [tit, setTit] = useState<TitType>('物')
 
   const titFu = useCallback((val: TitType) => {
-    // 待完善
     if (val === '人') {
       return alert('正在努力开发中')
     }

+ 3 - 3
Code/src/pages/B1more/index.tsx

@@ -124,9 +124,9 @@ function B1more() {
               </video>
 
               {/* 右下角的跳过按钮 */}
-              {myData.isLdong ? null : (
-                <BtnRight imgName='skip' clickSon={() => setVideoSrc('')} title='跳过' />
-              )}
+              <BtnRight imgName='skip' clickSon={() => setVideoSrc('')} title='跳过' />
+              {/* {myData.isLdong ? null : (
+              )} */}
             </div>
           ))
         : null}

+ 4 - 0
Code/src/pages/C2unityEnd/index.tsx

@@ -16,6 +16,10 @@ const obj = {
   game2: {
     pc: 'unity/HeNanMuseum-pc/PuzzleGame/index.html',
     app: 'unity/HeNanMuseum-mobile/PuzzleGame/index.html'
+  },
+  game3: {
+    pc: 'unity/HeNanMuseum-pc/ThrowGame/index.html',
+    app: 'unity/HeNanMuseum-mobile/ThrowGame/index.html'
   }
 }
 

+ 15 - 5
Code/src/types/declaration.d.ts

@@ -39,6 +39,13 @@ type MyDataType = {
       data: VisitHotDataType
     }[]
   }
+  visit2: {
+    进入室内: string
+    进入院落: string
+    btnArr: string[]
+    baiXiBg: string
+    baixiArr: string[]
+  }
   banquet: {
     bgImg: string
     videos: string[]
@@ -66,11 +73,7 @@ type MyDataType = {
       }
       data: VisitHotDataType
     }[]
-    floor: {
-      name: string
-      hoverSrc: string
-      videoSrc: string
-    }[]
+    floor: string[]
     lastVideo: string
   }
 
@@ -117,6 +120,8 @@ type MyDataType = {
   plow: {
     lastVideo: string
     baseImg: string
+    flooBtn: string[]
+    isSSSArr: PlowHotType[]
     info: {
       name: string
       videoSrc: string
@@ -124,6 +129,11 @@ type MyDataType = {
       hot: PlowHotType[]
     }[]
   }
+  xianJu: {
+    bgImg: string
+    videos: string[]
+    lastVideo: string
+  }
   end: {
     baseImg: string
     txt: string

BIN
资源/staticData/banquet/1.mp4


BIN
资源/staticData/banquet/bg.jpg


BIN
资源/staticData/banquet/end.mp4


BIN
资源/staticData/base/ban.png


BIN
资源/staticData/base/bi1.png


BIN
资源/staticData/base/end.mp4


BIN
资源/staticData/base/tie1.mp4


BIN
资源/staticData/base/tie2.mp4


BIN
资源/staticData/base/tieBg.jpg


BIN
资源/staticData/base/txt1.png


BIN
资源/staticData/base/txt1Ac.png


BIN
资源/staticData/base/txt2.png


BIN
资源/staticData/base/txt2Ac.png


BIN
资源/staticData/chef/bg.jpg


BIN
资源/staticData/chef/end.mp4


BIN
资源/staticData/dance/3.mp4


BIN
资源/staticData/dance/4.mp4


BIN
资源/staticData/dance/5.mp4


BIN
资源/staticData/dance/6.mp4


BIN
资源/staticData/dance/7.png


BIN
资源/staticData/dance/8.mp4


BIN
资源/staticData/dance/end.mp4


BIN
资源/staticData/dance/2.mp4


资源/staticData/dance/2.png → 资源/staticData/dance/伴奏.png


BIN
资源/staticData/dance/1.mp4


资源/staticData/dance/1.png → 资源/staticData/dance/击鼓.png


BIN
资源/staticData/home/end.mp4


BIN
资源/staticData/plow/1.mp4


BIN
资源/staticData/plow/2.mp4


BIN
资源/staticData/plow/3.mp4


BIN
资源/staticData/plow/4.mp4


BIN
资源/staticData/plow/5.mp4


BIN
资源/staticData/plow/bg.jpg


BIN
资源/staticData/plow/end.mp4


BIN
资源/staticData/plow/sBg.jpg


BIN
资源/staticData/dance/7.mp4


BIN
资源/staticData/plow/蔬菜.mp4


BIN
资源/staticData/visit/bg.jpg


BIN
资源/staticData/visit/end.mp4


BIN
资源/staticData/visit2/waiBg.jpg


BIN
资源/staticData/visit2/吹火.mp4


资源/staticData/dance/4.png → 资源/staticData/visit2/吹火.png


BIN
资源/staticData/visit2/女宾.mp4


BIN
资源/staticData/visit2/掷丸.mp4


资源/staticData/dance/6.png → 资源/staticData/visit2/掷丸.png


BIN
资源/staticData/visit2/相扑.mp4


资源/staticData/dance/8.png → 资源/staticData/visit2/相扑.png


BIN
资源/staticData/visit2/贵宾.mp4


BIN
资源/staticData/visit2/踏鼓舞.mp4


资源/staticData/dance/3.png → 资源/staticData/visit2/踏鼓舞.png


BIN
资源/staticData/visit2/进入室内.mp4


BIN
资源/staticData/visit2/进入院落.mp4


BIN
资源/staticData/visit2/门生.mp4


BIN
资源/staticData/visit2/顶棍.mp4


资源/staticData/dance/5.png → 资源/staticData/visit2/顶棍.png


BIN
资源/staticData/xianJu/1.mp4


BIN
资源/staticData/xianJu/bg.jpg


BIN
资源/staticData/xianJu/end.mp4


BIN
资源/staticData/xianJu/mulu.png