【发布时间】:2012-09-12 06:20:25
【问题描述】:
我正在 javascript/jquery 中构建某种拖放应用程序(基于 DOM,而不是画布)。
这个想法是能够在 3D 场景中拖动 div(在 3D 中旋转的 div)。
它适用于 2D 平面图,问题是当我在 3D 中旋转场景时,对象位置并不反映实际的鼠标位置,而是在 3D 中转换的坐标
图解示例:
我希望对象相对于鼠标的绝对位置移动。
我这样计算鼠标位置:
document.addEventListener(gestureMove, function (event) {
if (mouseDown == true) {
event.preventDefault();
moveX = (event.pageX - $('#scene').offset().left);
moveY = (event.pageY - $('#scene').offset().top);
}
#scene {
width: 1000px;
height: 1000px;
-webkit-transform-style: preserve-3d;
-webkit-transform: rotateX( 35deg );
}
早期的解决方案是根据初始位置计算鼠标位置与对象之间的差异,并在拖动过程中将其添加到对象位置。它可以工作,但动画真的很不稳定,一点也不流畅。
我确信有一种更简单的方法可以获取相对于 3D 计划的鼠标坐标,但目前无法找到真正的解决方案。
关于这个主题的大部分搜索结果都指向游戏语言或画布/webgl 问题。
有什么想法吗?
谢谢
【问题讨论】:
-
我认为 Google Sketch-up 在这方面做得很好。
-
你能把你的代码提炼到足以放入一个 jsfiddle 中吗?
-
不用考虑Z轴吗?以及 X 和 Y?
-
@Shmiddty 我更新了问题(jsfiddle.net/JulianG/Aubcr)
标签: javascript jquery 3d drag-and-drop mouse-coordinates