import React, { useCallback, useEffect, useRef, useState } from "react"; import styles from "./index.module.scss"; import classNames from "classnames"; import { envUrl } from "@/utils/env"; import { imgLodingFu, maoData2, mapData1 } from "./data"; import iconImg1 from "@/assets/img/map/icon1.png"; import iconImg1Ac from "@/assets/img/map/icon1Ac.png"; import iconImg2 from "@/assets/img/map/icon2.png"; import iconImg2Ac from "@/assets/img/map/icon2Ac.png"; import MapSon from "./MapSon"; import { useSelector } from "react-redux"; import { RootState } from "@/store"; import { domShowFu } from "@/utils/domShow"; type Props = { type: number; sonChaneType: (val: number) => void; }; function A0Map({ type, sonChaneType }: Props) { // 进页面显示加载中 useEffect(() => { domShowFu("#AsyncSpinLoding", true); }, []); // 一级地图 图片的加载 const imgLodingArr = useSelector( (state: RootState) => state.A0layout.imgLodingArr ); // 控制二级地图的显示 const [mapSon, setMapSon] = useState(0); // 大图片是否已经加载完 const isImgLodingFu = useCallback(() => { let flag = false; if (imgLodingArr.includes(mapSon)) { domShowFu("#AsyncSpinLoding", false); flag = true; } return flag; }, [imgLodingArr, mapSon]); // 开场动画帧的变化 const [moveInd, setMoveInd] = useState(0); const moveTime = useRef(-1); const moveYun = useCallback(() => { if (!isImgLodingFu()) { clearInterval(moveTime.current); let num = 0; moveTime.current = window.setInterval(() => { setMoveInd(num); num++; if (num > 30 || isImgLodingFu()) { clearInterval(moveTime.current); } }, 50); } }, [isImgLodingFu]); useEffect(() => { moveYun(); return () => { clearInterval(moveTime.current); }; }, [moveYun]); // 鼠标hover const [isHover, setIsHover] = useState(0); return (