我正在使用JavaScript/jQuery(基于DOM而非canvas)构建一种拖放应用程序。
这个想法是能够在3D场景中拖动div(一个在3D中旋转的div)。
它在2D平面上工作正常,问题是当我将场景旋转到3D时,对象的位置不反映实际鼠标位置,而是在3D中翻译的坐标。
举个例子: JSFIDDLE上的例子 我希望对象相对于鼠标的绝对位置移动。
我像这样计算鼠标位置:
一个早期的解决方案是根据初始位置计算鼠标位置和对象之间的差异,并在拖动期间将其添加到对象位置上。这种方法可以工作,但动画非常生硬,一点也不流畅。
我确信有更简单的方法来获取相对于3D平面的鼠标坐标,但目前还没有找到真正的解决方案。
关于这个问题的大部分搜索结果指向游戏相关的语言或者canvas/webgl方面的问题。
有什么想法吗?
谢谢。
这个想法是能够在3D场景中拖动div(一个在3D中旋转的div)。
它在2D平面上工作正常,问题是当我将场景旋转到3D时,对象的位置不反映实际鼠标位置,而是在3D中翻译的坐标。
举个例子: JSFIDDLE上的例子 我希望对象相对于鼠标的绝对位置移动。
我像这样计算鼠标位置:
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方面的问题。
有什么想法吗?
谢谢。