美文网首页three.js学习
threejs的点击事件

threejs的点击事件

作者: 论宅 | 来源:发表于2018-11-23 17:59 被阅读0次

threeJS的点击,原理很简单。
将需要添加点击事件的对象放在一个数组里,生成点击事件。用户点击屏幕的时候,threejs会根据视角从触碰点会发射一条“激光”,激光扫到的所有记录在数组里的对象,都被会捕捉到。

var clickObjects=[];
clickObjects.push(obj1);
function initThreeClickEvent() {
    //点击射线
    var raycaster = new THREE.Raycaster();
    var mouse = new THREE.Vector2();
    document.getElementById("container").addEventListener('mousedown', onDocumentMouseDown, false);
    function onDocumentMouseDown(event) {
        event.preventDefault();
        mouse.x = (event.clientX / renderer.domElement.clientWidth) * 2 - 1;
        mouse.y = -(event.clientY / renderer.domElement.clientHeight) * 2 + 1;

        raycaster.setFromCamera(mouse, camera);

        //总结一下,这里必须装网格,mesh,装入组是没有效果的
        //所以我们将所有的盒子的网格放入对象就可以了
        // 需要被监听的对象要存储在clickObjects中。
        var intersects = raycaster.intersectObjects(clickObjects);

        // console.log(intersects)
        if(intersects.length > 0) {
            // 在这里填写点击代码
            console.log("dianji");
            console.log(intersects[0].object)
            showDetailPage(intersects[0].object.name);

        }

    }
}

上面就是一个标准的点击事件的方法,这里需要注意几点:

  1. container是canvas的id名称,请换成自己的canvas。
  2. clickObjects存储的都是mesh,对象实例,存储group是不会有反应的。
  3. 在XXX被定义,生成的时候,调用scene.add(XXX)的时候,顺手一个clickObjects.push(XXX),就可以实现监听了。
  4. 捕捉到的监听数量不唯一,intersects返回的是一个数组,被该激光打中的所有对象都会存储在这个数组当中,选择你需要的提取出来下一步吧。
  5. 即使点击空了,也会有点击回馈,intersects返回空数组。

相关文章

  • threejs的点击事件

    threeJS的点击,原理很简单。将需要添加点击事件的对象放在一个数组里,生成点击事件。用户点击屏幕的时候,thr...

  • threejs 模型点击事件

    前言 在三维场景中我们经常会用到一个功能,那就是与场景中的模型有事件交互即点击模型对象希望可以获取点击的模型对象,...

  • threejs 模型点击事件插曲

    模型点击事件插曲 在做三维可视化项目的过程中,我们经常会有模型的点击交互事件,在上一篇我有介绍过模型点击交互的方法...

  • 8.点击事件的分发机制

    问题: listview控件点击事件,添加了长按点击事件和点击事件,发现,长按点击事件执行之后点击事件也被触发了。...

  • 点击事件

    var a = document.getElementById('anniu'); var c = documen...

  • 点击事件

    case R.id.btnBelongTown:geTown();openFilterTypeTown();bre...

  • 点击事件

    点击事件写的位置 以及文档加载

  • 点击事件

    vue的文档非常垃圾不要去百度 以@为族 @click.stop 防止事件冒泡 @click.native 清楚n...

  • 数据埋点之六:埋点需求设计

    主要埋点事件: 点击事件点击事件,用户点击按钮即算点击事件,不管点击后有无结果;点击一次记一次。 曝光事件成功打开...

  • threejs相机只在水平或垂直方向上平移

    threejs 相机水平和垂直移动,这个功能在threejs提供了很方便的操作方法,在threejs里相机enab...

网友评论

    本文标题:threejs的点击事件

    本文链接:https://www.haomeiwen.com/subject/ivfsqqtx.html