我正在 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 计划的鼠标坐标,但目前无法找到真正的解决方案。
关于这个主题的大多数搜索结果都指向面向游戏的语言,或 canvas/webgl 问题。
有任何想法吗 ?
谢谢