如何在 THREE.js 中获取被点击的元素
假设我在画布中有一些元素,它们可能会相互覆盖。当点击一个点时,我怎样才能得到那个元素?
更新:这个演示有很大帮助: http://mrdoob.github.com/third.js/examples/canvas_interactive_cubes.html
Say I have some elements in the canvas, they may be overridden with each other. When clicking on a point, how can I get that very element?
update: this demo helps a lot:
http://mrdoob.github.com/three.js/examples/canvas_interactive_cubes.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用以下代码。这将允许您添加点击事件并在发生时执行您需要的操作。您可以查看页面的源代码,看看他们正在做什么,我就是从那里得到这段代码的。
Use the following code. This will allow you to add a click event and do what you need to when that happens. You can view the source of the page to see what they are doing which is were I got this code from.
您链接到的示例有一个简单的 API。
将其放入您的 HTML 中。您必须下载脚本并确保它加载了。
然后,在网格对象上调用以下命令:
或者一个更有趣的示例,可以平滑地对对象的旋转和颜色进行动画处理:
The example you link to has a simple API for this.
Put this in your HTML. You'll have to download the script and make sure it loads.
Then, on your mesh object, call the following:
Or a more interesting example that animates the rotation and color of an object smoothly:
也许这个工具可以帮助你,一个全交互管理器,帮助 Three.js 轻松绑定交互事件
更多细节参见 三.交互
maybe this tool can help you, a full-interaction manager, help three.js easy to binding interaction event
more detial see three.interaction
德鲁使用 THREEx.domevents 的答案已经过时了。新的 API 需要初始化 domEvents 对象,然后将网格体与相应的事件侦听器绑定到它。
来自 Github 存储库:
此外,它还可以在 Bower 上使用!
编辑:
尽管没有记录,但也支持
'touchstart'
、'touchend'
以及其他一些移动事件。如果支持移动设备,请务必查看这些内容,因为在某些设备上并不总是报告鼠标“点击”。Drew's answer using THREEx.domevents is outdated. The new API requires initializing a domEvents object and then bind meshes w/ corresponding event listeners to it.
From the Github repo:
Also, it's available on bower!
Edit:
Though not documented, there is support for
'touchstart'
,'touchend'
, and a few other mobile events as well. Be sure to look into these if supporting mobile, as mouse 'clicks' aren't always reported as such on some devices.