caner 1 year ago
parent
commit
4badc6ab71
2 changed files with 6 additions and 21 deletions
  1. 1 7
      src/pages/three/pointFace.vue
  2. 5 14
      src/pages/three/three.service.ts

+ 1 - 7
src/pages/three/pointFace.vue

@@ -108,12 +108,6 @@ function animation() {
   return requestAnimationFrame(animation)
   return requestAnimationFrame(animation)
 }
 }
 
 
-// 点击事件
-function OBJclickEvent() {
-  const data = threeService.onMouseDblclick()
-  console.log(666, data)
-}
-
 // 清空场景并初始化
 // 清空场景并初始化
 function clearAndInt() {
 function clearAndInt() {
   if (!threeService.scene) return
   if (!threeService.scene) return
@@ -468,7 +462,7 @@ function initThree() {
   // 渲染
   // 渲染
   animation()
   animation()
   // 点击事件
   // 点击事件
-  OBJclickEvent()
+  threeService.onMouseDblclick((data) => { console.log('鼠标点击', data) })
   // 添加对象
   // 添加对象
   addOBJ()
   addOBJ()
 }
 }

+ 5 - 14
src/pages/three/three.service.ts

@@ -69,11 +69,10 @@ export default class ThreeService {
   }
   }
 
 
   /**
   /**
-   * 鼠标点击事件
-   * @returns data点中的元素
+   * 鼠标点击
+   * @param callBack
    */
    */
-  onMouseDblclick() {
-    let data = null as any
+  onMouseDblclick(callBack: (data: any) => void) {
     this.dom.addEventListener(
     this.dom.addEventListener(
       'click',
       'click',
       (event) => {
       (event) => {
@@ -82,23 +81,15 @@ export default class ThreeService {
         // 获取选中最近的 Mesh 对象
         // 获取选中最近的 Mesh 对象
         if (intersects.length !== 0 && intersects[0].object instanceof Three.Mesh) {
         if (intersects.length !== 0 && intersects[0].object instanceof Three.Mesh) {
           const selectObject = intersects[0].object
           const selectObject = intersects[0].object
-          data = selectObject
           console.log('选中', selectObject)
           console.log('选中', selectObject)
+          callBack(selectObject)
         } else {
         } else {
-          data = null
+          callBack(null)
           console.log('未选中 Mesh!')
           console.log('未选中 Mesh!')
         }
         }
-
-        //
-        const a = new Three.Vector3()
-        a.setFromMatrixPosition(this.camera.matrixWorld)
-        const b = new Three.Euler()
-        b.setFromQuaternion(this.camera.quaternion)
-        console.log('相机位置角度', a, b)
       },
       },
       false
       false
     )
     )
-    return data
   }
   }
 
 
   /**
   /**