ThreeWorldEventMainQingXiCheAndQv.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <script setup>
  2. import { watch } from "vue";
  3. import { CommonVal } from "@/components/ChengGuangYuanJing/store/CommonVal.js";
  4. import { QingXiCheAndQvMyThreeWorldStore } from "./store/QingXiCheAndQvMyThreeWorldStore.js";
  5. import ThreeWorldQingXiCheAndQv from "./ThreeWorldQingXiCheAndQv.vue";
  6. import { QingXiCheAndQvThreeWorldEventMain } from "./js/QingXiCheAndQvThreeWorldEventMain.js";
  7. import { QingXiCheAndQvCarEvent } from "./js/QingXiCheAndQvCarEvent.js";
  8. import { QingXiCheAndQvCarEventClick } from "./js/QingXiCheAndQvCarEventClick.js";
  9. import { QingXiCheAndQvComHighlightLayer } from "./js/QingXiCheAndQvComHighlightLayer.js";
  10. import { QingXiCheAndQvThreeWorldCamera } from "./js/QingXiCheAndQvThreeWorldCamera.js";
  11. import { WindowTxtStore } from "@/components/WindowQingXiCheAndQv/store/WindowTxtStore.js";
  12. import { WindowVideoStore } from "@/components/WindowQingXiCheAndQv/store/WindowVideoStore.js";
  13. import { WindowCountdownStore } from "@/components/WindowQingXiCheAndQv/store/WindowCountdownStore.js";
  14. import { ComMusic } from "../../utils/common/ComMusic.js";
  15. import { QingXiCheAndQvComRes } from "./js/QingXiCheAndQvComRes.js";
  16. import { WindowEvent } from "../WindowQingXiCheAndQv/js/WindowEvent.js";
  17. import { WindowVideoRemoveColorStore } from "@/components/WindowQingXiCheAndQv/store/WindowVideoRemoveColorStore.js";
  18. import { QingXiCheAndQvComClipPlaneMeshEvent } from "./js/QingXiCheAndQvComClipPlaneMeshEvent.js";
  19. import { QingXiCheAdnQvCarEventStep } from "./js/QingXiCheAdnQvCarEventStep.js";
  20. /**
  21. * 平时开发3d代码逻辑可以写这里
  22. * 更多的代码逻辑,建议用面向对象的方式去开发
  23. * 不然后面的逻辑会越来越复杂
  24. */
  25. /**
  26. * 举个例子,我们oss文件上传了,编辑器打包后的代码
  27. * 地址为 https://**.com/3dmodel/index.html
  28. *
  29. * 我们将对应的项目的3d模型,在了同域的地址是
  30. * https://**.com/自定义目录1/自定义目录2/model/
  31. *
  32. */
  33. // // 拼接出进入3d场景的地址,用于后续发布
  34. // let threeWorldUrl = "https://**.com/3dmodel/index.html#/main?id=zidingyi&user=zidingyi"
  35. // + '&commonconfig=https://**.com/自定义目录1/自定义目录2/model/'
  36. // + '&commonmodel=https://**.com/自定义目录1/自定义目录2/model/';
  37. // /**
  38. // * 本地开发调试固定地址
  39. // */
  40. // let threeWorldUrl = "3dMain/index.html#/main?id=zidingyi";
  41. // let commonconfig = "http://localhost:5173/3dMain/model_water_car_3/";
  42. // let commonmodel = "http://localhost:5173/3dMain/model_water_car_3/";
  43. // let threeWorldUrl = "3dMain/index.html#/main?id=zidingyi_lu_cun&user=zidingyi"
  44. // + '&commonconfig=' + commonconfig
  45. // + '&commonmodel=' + commonmodel;
  46. // let commonconfig = "https://www.3dyzt.com/waterMaintenance/3dMain/model_water_car_3/";
  47. // let commonmodel = "https://www.3dyzt.com/waterMaintenance/3dMain/model_water_car_3/";
  48. // let threeWorldUrl = "3dMain/index.html#/main?id=zidingyi_lu_cun&user=zidingyi"
  49. // + '&commonconfig=' + commonconfig
  50. // + '&commonmodel=' + commonmodel;
  51. // let hostUrl = import.meta.env.VITE_THREE_WORLD_URL;
  52. // let commonconfig = hostUrl + "/3dMain/model_water_car_6/";
  53. // let commonmodel = hostUrl + "/3dMain/model_water_car_6/";
  54. // let threeWorldUrl = "3dMain/index.html#/main?id=zidingyi_lu_cun&user=zidingyi"
  55. // + '&commonconfig=' + commonconfig
  56. // + '&commonmodel=' + commonmodel;
  57. let hostUrl = import.meta.env.VITE_THREE_WORLD_URL;
  58. let commonconfig = hostUrl + "/3dMain/model_water_car_7/";
  59. let commonmodel = hostUrl + "/3dMain/model_water_car_7/";
  60. let threeWorldUrl = "3dMain/index.html#/main?id=zidingyi_lu_cun&user=zidingyi"
  61. + '&commonconfig=' + commonconfig
  62. + '&commonmodel=' + commonmodel;
  63. /**
  64. * 回调加载百分比
  65. */
  66. const callbackLoadPercentageEvent = (json) => {
  67. // console.log("回调加载百分比", json);
  68. let loadPercentage = parseFloat(json["loadPercentage"]);
  69. if (loadPercentage == null || loadPercentage == undefined || loadPercentage < 0) {
  70. loadPercentage = 0;
  71. }
  72. QingXiCheAndQvMyThreeWorldStore().loadPercentage = loadPercentage;
  73. // 加载小于百分比
  74. if (loadPercentage < 100) {
  75. // ##############################【这里只做控制】隐藏其他按钮界面等
  76. CommonVal().loadSuccess = false;
  77. return;
  78. }
  79. }
  80. /**
  81. * 回调加载完成
  82. */
  83. const callbackLoadEndEvent = (json) => {
  84. // console.log("回调加载完成", json);
  85. QingXiCheAndQvMyThreeWorldStore().loadPercentage = 100;
  86. // 此时是显示角色的界面
  87. if (json["roleChoiceOpenBool"] === true) {
  88. // ############################## 隐藏其他按钮界面等
  89. CommonVal().loadSuccess = false;
  90. return;
  91. }
  92. // ############################## 这个时候,是真正的进入3d画面了,才显示其他按钮界面等
  93. CommonVal().loadSuccess = true;
  94. // 初始化操作3d的类对象,后续代码在这里面操作
  95. QingXiCheAndQvThreeWorldEventMain.find().initObj(
  96. CommonVal().obj.CommonValQingXiCheAndQv,
  97. CommonVal().obj.CommonValQingXiCheAndQv.objIframe,
  98. CommonVal().obj.CommonValQingXiCheAndQv.objIframe.ChengGuangYuanJing.CommonVal.find().objScene,
  99. CommonVal().obj.CommonValQingXiCheAndQv.objIframe.BABYLON
  100. );
  101. QingXiCheAndQvComHighlightLayer.find().init(
  102. QingXiCheAndQvThreeWorldEventMain.find()
  103. );
  104. QingXiCheAndQvThreeWorldCamera.find().initObj(
  105. CommonVal().obj.CommonValQingXiCheAndQv,
  106. CommonVal().obj.CommonValQingXiCheAndQv.objIframe,
  107. CommonVal().obj.CommonValQingXiCheAndQv.objIframe.ChengGuangYuanJing.CommonVal.find().objScene,
  108. CommonVal().obj.CommonValQingXiCheAndQv.objIframe.BABYLON
  109. );
  110. QingXiCheAndQvThreeWorldCamera.find().addConfig();
  111. QingXiCheAndQvCarEvent.find().objThreeWorldEventMain = QingXiCheAndQvThreeWorldEventMain.find();
  112. QingXiCheAndQvCarEventClick.find().objThreeWorldEventMain = QingXiCheAndQvThreeWorldEventMain.find();
  113. QingXiCheAndQvComClipPlaneMeshEvent.find().objThreeWorldEventMain = QingXiCheAndQvThreeWorldEventMain.find();
  114. QingXiCheAndQvComClipPlaneMeshEvent.find().updateConfig();
  115. QingXiCheAdnQvCarEventStep.find().objThreeWorldEventMain = QingXiCheAndQvThreeWorldEventMain.find();
  116. // 新增被操作的 Store
  117. QingXiCheAndQvCarEvent.find().ComStore["WindowTxtStore"] = WindowTxtStore;
  118. QingXiCheAndQvCarEvent.find().ComStore["WindowVideoStore"] = WindowVideoStore;
  119. QingXiCheAndQvCarEvent.find().ComStore["WindowCountdownStore"] = WindowCountdownStore;
  120. WindowEvent.find().ComStore["WindowTxtStore"] = WindowTxtStore;
  121. WindowEvent.find().ComStore["WindowVideoStore"] = WindowVideoStore;
  122. WindowEvent.find().ComStore["WindowCountdownStore"] = WindowCountdownStore;
  123. WindowEvent.find().ComStore["WindowVideoRemoveColorStore"] = WindowVideoRemoveColorStore;
  124. configMusicEvent();
  125. configVideoEvent();
  126. setTimeout(function() {
  127. QingXiCheAndQvCarEvent.find().evnetInit_1();
  128. // QingXiCheAndQvThreeWorldEventMain.find().toFlyModel();
  129. QingXiCheAndQvThreeWorldEventMain.find().groundNoRemove();
  130. // QingXiCheAndQvThreeWorldEventMain.find().eyeNameLook("实验");
  131. // 自动触发模拟点击,解决加载完成后,在点击下,重新设置了材质,感觉会有问题
  132. CommonVal().obj.CommonValQingXiCheAndQv.objIframe.ChengGuangYuanJing.CommonVal.find().screenClickNumEvent();
  133. }, 1000);
  134. // }, 300);
  135. }
  136. /**
  137. * 配置用到的声音文件
  138. */
  139. const configMusicEvent = () => {
  140. ComMusic.find().codeJson["lightningOne"] = new URL("../../assets/res/music/lightningOne.mp3", import.meta.url).href;
  141. ComMusic.find().codeJson["lightningTwo"] = new URL("../../assets/res/music/lightningTwo.mp3", import.meta.url).href;
  142. ComMusic.find().codeJson["lightningThree"] = new URL("../../assets/res/music/lightningThree.mp3", import.meta.url).href;
  143. // ComMusic.find().play("lightningThree");
  144. }
  145. /**
  146. * 配置用到的视频地址文件 等其他文件
  147. */
  148. const configVideoEvent = () => {
  149. QingXiCheAndQvCarEvent.find().videoJson["02"] = new URL("../../assets/res/video/02.mp4", import.meta.url).href;
  150. QingXiCheAndQvCarEvent.find().videoJson["03"] = new URL("../../assets/res/video/03.mp4", import.meta.url).href;
  151. QingXiCheAndQvCarEvent.find().videoJson["04"] = new URL("../../assets/res/video/04.mp4", import.meta.url).href;
  152. QingXiCheAndQvCarEvent.find().videoJson["videw_liu_cheng_1"] = new URL("../../assets/res/video/videw_liu_cheng_1.mp4", import.meta.url).href;
  153. QingXiCheAndQvCarEvent.find().videoJson["videw_liu_cheng_2"] = new URL("../../assets/res/video/videw_liu_cheng_2.mp4", import.meta.url).href;
  154. QingXiCheAndQvComRes.find().resJson["img_shuang"] = new URL("../../assets/res/img/texture/shuang_shan.jpg", import.meta.url).href;
  155. // 打开车辆双闪,同时开启工作双闪灯
  156. QingXiCheAndQvComRes.find().resJson["QingXiChe_01"] = new URL("../../assets/res/mp4/01.mp4", import.meta.url).href;
  157. // 按下取力器开关
  158. QingXiCheAndQvComRes.find().resJson["QingXiChe_02"] = new URL("../../assets/res/mp4/02.mp4", import.meta.url).href;
  159. // 从水管固定座上拧下高压水管
  160. QingXiCheAndQvComRes.find().resJson["QingXiChe_03"] = new URL("../../assets/res/mp4/03.mp4", import.meta.url).href;
  161. // 确认手刹已拉起,档位是空档,然后发动车辆
  162. QingXiCheAndQvComRes.find().resJson["QingXiChe_04"] = new URL("../../assets/res/mp4/04.mp4", import.meta.url).href;
  163. // 取出高压水管并放入布管器内
  164. QingXiCheAndQvComRes.find().resJson["QingXiChe_05"] = new URL("../../assets/res/mp4/05.mp4", import.meta.url).href;
  165. // 在触屏操作面板上将管长清零
  166. QingXiCheAndQvComRes.find().resJson["QingXiChe_06"] = new URL("../../assets/res/mp4/06.mp4", import.meta.url).href;
  167. // 拆卸高压喷头放入喷头机箱内
  168. QingXiCheAndQvComRes.find().resJson["QingXiChe_07"] = new URL("../../assets/res/mp4/07.mp4", import.meta.url).href;
  169. // 关闭车辆双闪和工作双闪箭头灯
  170. QingXiCheAndQvComRes.find().resJson["QingXiChe_08"] = new URL("../../assets/res/mp4/08.mp4", import.meta.url).href;
  171. // 关闭取力器开关
  172. QingXiCheAndQvComRes.find().resJson["QingXiChe_09"] = new URL("../../assets/res/mp4/09.mp4", import.meta.url).href;
  173. // 将车辆正常熄火,恭喜你完成全部操作
  174. QingXiCheAndQvComRes.find().resJson["QingXiChe_10"] = new URL("../../assets/res/mp4/10.mp4", import.meta.url).href;
  175. // 调整卷筒器到合适位置
  176. QingXiCheAndQvComRes.find().resJson["QingXiChe_11"] = new URL("../../assets/res/mp4/11.mp4", import.meta.url).href;
  177. // 至触摸屏关闭冲水开关
  178. QingXiCheAndQvComRes.find().resJson["QingXiChe_12"] = new URL("../../assets/res/mp4/12.mp4", import.meta.url).href;
  179. // 打开车门进入驾驶室
  180. QingXiCheAndQvComRes.find().resJson["QingXiChe_13"] = new URL("../../assets/res/mp4/13.mp4", import.meta.url).href;
  181. // 疏通管道后减小油门到初始状态
  182. QingXiCheAndQvComRes.find().resJson["QingXiChe_14"] = new URL("../../assets/res/mp4/14.mp4", import.meta.url).href;
  183. // 踩下车辆离合器5秒
  184. QingXiCheAndQvComRes.find().resJson["QingXiChe_15"] = new URL("../../assets/res/mp4/15.mp4", import.meta.url).href;
  185. // 在施工范围放置警示标识
  186. QingXiCheAndQvComRes.find().resJson["QingXiChe_16"] = new URL("../../assets/res/mp4/16.mp4", import.meta.url).href;
  187. // 套上高压水管护管器
  188. QingXiCheAndQvComRes.find().resJson["QingXiChe_17"] = new URL("../../assets/res/mp4/17.mp4", import.meta.url).href;
  189. // 将高压水管放入待施工的管道内
  190. QingXiCheAndQvComRes.find().resJson["QingXiChe_18"] = new URL("../../assets/res/mp4/18.mp4", import.meta.url).href;
  191. // 回到驾驶室踩下车辆离合器5秒
  192. QingXiCheAndQvComRes.find().resJson["QingXiChe_19"] = new URL("../../assets/res/mp4/19.mp4", import.meta.url).href;
  193. // 安装合适的高压喷头
  194. QingXiCheAndQvComRes.find().resJson["QingXiChe_20"] = new URL("../../assets/res/mp4/20.mp4", import.meta.url).href;
  195. // 在安全的情况开启冲水开关
  196. QingXiCheAndQvComRes.find().resJson["QingXiChe_21"] = new URL("../../assets/res/mp4/21.mp4", import.meta.url).href;
  197. // 缓慢抬起离合器
  198. QingXiCheAndQvComRes.find().resJson["QingXiChe_22"] = new URL("../../assets/res/mp4/22.mp4", import.meta.url).href;
  199. // 下车确定安全灯显示是否正常
  200. QingXiCheAndQvComRes.find().resJson["QingXiChe_23"] = new URL("../../assets/res/mp4/23.mp4", import.meta.url).href;
  201. // 根据现场工况调节冲水压力
  202. QingXiCheAndQvComRes.find().resJson["QingXiChe_24"] = new URL("../../assets/res/mp4/24.mp4", import.meta.url).href;
  203. // 带压收回高压水管
  204. QingXiCheAndQvComRes.find().resJson["QingXiChe_25"] = new URL("../../assets/res/mp4/25.mp4", import.meta.url).href;
  205. // 将高压水管拧到水管固定座
  206. QingXiCheAndQvComRes.find().resJson["QingXiChe_26"] = new URL("../../assets/res/mp4/26.mp4", import.meta.url).href;
  207. // QingXiCheAndQvComRes.find().resJson["QingXiChe_01"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  208. // QingXiCheAndQvComRes.find().resJson["QingXiChe_02"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  209. // QingXiCheAndQvComRes.find().resJson["QingXiChe_03"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  210. // QingXiCheAndQvComRes.find().resJson["QingXiChe_04"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  211. // QingXiCheAndQvComRes.find().resJson["QingXiChe_05"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  212. // QingXiCheAndQvComRes.find().resJson["QingXiChe_06"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  213. // QingXiCheAndQvComRes.find().resJson["QingXiChe_07"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  214. // QingXiCheAndQvComRes.find().resJson["QingXiChe_08"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  215. // QingXiCheAndQvComRes.find().resJson["QingXiChe_09"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  216. // QingXiCheAndQvComRes.find().resJson["QingXiChe_10"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  217. // QingXiCheAndQvComRes.find().resJson["QingXiChe_11"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  218. // QingXiCheAndQvComRes.find().resJson["QingXiChe_12"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  219. // QingXiCheAndQvComRes.find().resJson["QingXiChe_13"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  220. // QingXiCheAndQvComRes.find().resJson["QingXiChe_14"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  221. // QingXiCheAndQvComRes.find().resJson["QingXiChe_15"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  222. // QingXiCheAndQvComRes.find().resJson["QingXiChe_16"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  223. // QingXiCheAndQvComRes.find().resJson["QingXiChe_17"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  224. // QingXiCheAndQvComRes.find().resJson["QingXiChe_18"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  225. // QingXiCheAndQvComRes.find().resJson["QingXiChe_19"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  226. // QingXiCheAndQvComRes.find().resJson["QingXiChe_20"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  227. // QingXiCheAndQvComRes.find().resJson["QingXiChe_21"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  228. // QingXiCheAndQvComRes.find().resJson["QingXiChe_22"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  229. // QingXiCheAndQvComRes.find().resJson["QingXiChe_23"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  230. // QingXiCheAndQvComRes.find().resJson["QingXiChe_24"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  231. // QingXiCheAndQvComRes.find().resJson["QingXiChe_25"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  232. // QingXiCheAndQvComRes.find().resJson["QingXiChe_26"] = new URL("../../assets/res/mp4/demo/01.mp4", import.meta.url).href;
  233. }
  234. /**
  235. * 回调距离范围内
  236. */
  237. const callbackDistanceYesEvent = (json) => {
  238. // console.log("回调距离范围内", json);
  239. }
  240. /**
  241. * 回调距离范围外
  242. */
  243. const callbackDistanceNoEvent = (json) => {
  244. // console.log("回调距离范围外", json);
  245. }
  246. /**
  247. * 回调视角切换完成
  248. */
  249. const callbackCameraVisualAngleJsonToLookEvent = (json) => {
  250. console.log("视角触发完成", json);
  251. let objIframeEdit = CommonVal().obj.CommonValQingXiCheAndQv;
  252. if (json.name == '绕车1') {
  253. objIframeEdit.cameraVisualAngleGetListNameGpsTo("绕车2");
  254. }
  255. if (json.name == '绕车2') {
  256. objIframeEdit.cameraVisualAngleGetListNameGpsTo("绕车3");
  257. }
  258. if (json.name == '绕车3') {
  259. objIframeEdit.cameraVisualAngleGetListNameGpsTo("绕车4");
  260. }
  261. if (json.name == '绕车4') {
  262. objIframeEdit.cameraVisualAngleGetListNameGpsTo("绕车5");
  263. }
  264. if (json.name == '绕车5') {
  265. objIframeEdit.cameraVisualAngleGetListNameGpsTo("绕车6");
  266. }
  267. if (json.name == '绕车6') {
  268. objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车-开门");
  269. }
  270. if (json.name == '调整坐姿') {
  271. objIframeEdit.cameraVisualAngleGetListNameGpsTo("手握方向盘");
  272. }
  273. if (json.name == '手握方向盘') {
  274. objIframeEdit.cameraVisualAngleGetListNameGpsTo("踩下离合器踏板");
  275. }
  276. if (json.name == '回到驾驶室踩下车辆离合器5秒1') {
  277. QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_打开左门', function() {
  278. objIframeEdit.cameraVisualAngleGetListNameGpsTo("回到驾驶室踩下车辆离合器5秒2");
  279. });
  280. }
  281. if (json.name == '清洗车流程完成') {
  282. QingXiCheAndQvCarEventClick.find().closeCarMen(function() {});
  283. }
  284. }
  285. </script>
  286. <template>
  287. <div class="ThreeWorldEventMain">
  288. <ThreeWorldQingXiCheAndQv
  289. :iframeId="'CommonValQingXiCheAndQv'"
  290. :url="threeWorldUrl"
  291. @callbackLoadPercentage="callbackLoadPercentageEvent"
  292. @callbackLoadEnd="callbackLoadEndEvent"
  293. @callbackDistanceYes="callbackDistanceYesEvent"
  294. @callbackDistanceNo="callbackDistanceNoEvent"
  295. @callbackCameraVisualAngleJsonToLook="callbackCameraVisualAngleJsonToLookEvent"
  296. ></ThreeWorldQingXiCheAndQv>
  297. <img class="mengBan" src="../../assets/res/img/com/meng_ban.webp" />
  298. </div>
  299. </template>
  300. <style lang="less" scoped>
  301. .ThreeWorldEventMain * {
  302. -moz-user-select: none;
  303. -webkit-user-select: none;
  304. -ms-user-select: none;
  305. -khtml-user-select: none;
  306. user-select: none;
  307. }
  308. .ThreeWorldEventMain {
  309. position: fixed;
  310. top: 0px;
  311. left: 0px;
  312. width: 100%;
  313. height: 100%;
  314. z-index: 0;
  315. .mengBan {
  316. position: fixed;
  317. top: 0px;
  318. left: 0px;
  319. width: 100%;
  320. height: 100%;
  321. z-index: 1000;
  322. /* 注意这里必须是被允许穿透点击的,否则堆叠高于了 canvas,则会出现无法点击到canvas了。加了这个即可解决这个问题 */
  323. pointer-events: none;
  324. opacity: 0.3;
  325. }
  326. }
  327. </style>