【发布时间】:2016-09-17 18:21:14
【问题描述】:
情况如下:我有一个全屏 Three.js 画布,一切正常,但我必须在 UIkit 模式中显示预览。那里的控件只能部分工作:缩放有效,平移无效。
JS:渲染器和控件
renderer = new THREE.WebGLRenderer({
alpha: true
});
// renderer size
if (typeof size === "object") {
renderer.setSize(size.width, size.height);
} else {
renderer.setSize(window.innerWidth, window.innerHeight);
}
$(canvas).append(renderer.domElement);
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
controls = new THREE.TrackballControls(camera, renderer.domElement);
controls.rotateSpeed = 10;
controls.zoomSpeed = 1.2;
controls.panSpeed = 0.8;
controls.noZoom = false;
controls.noPan = false;
controls.dynamicDampingFactor = 0.3;
controls.keys = [65, 83, 68];
controls.addEventListener("change", render);
正如您在上面的代码示例中看到的,我在渲染器之后实例化了控件,避免了this thread and solved by this answer 中描述的情况。此外,控件对象被显式绑定到渲染器 DOM 元素,以避免阻塞其他事件。
UIkit 模态似乎以某种方式捕获了所有拖动事件。
我在这个fiddle中重现了这个场景。
你们中是否有人遇到过类似情况并找到了解决方案或至少是一种解决方法?
【问题讨论】:
-
您当前的小提琴链接 TrackballControls.js 不正确。这是fixed version。
-
谢谢,@LeJeuneRenard。相应地编辑了问题。
标签: javascript three.js uikit