Трекбол хорошо работает в моей программе three.js вместе с прослушивателями событий onMouseClick и onMouseUp. Я включаю трекбол с помощью строки: -
controls = new THREE.TrackballControls( scene01camera02 , DOM_container);
Но прослушиватель событий onMouseDown не работает.
Если я отключу трекбол (закомментировав строку кода, показанную выше) и отключу любой другой связанный код, тогда onMouseDown будет работать нормально.
Есть ли способ одновременно использовать управление onMouseDown и Trackball?
Причина в том, что когда происходит событие mousedown, я могу определить, где на экране оно произошло, а затем переключить переменную управления, чтобы трекбол контролировал соответствующий scene_camera_container.
In HTML
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<div id="ThreeJScontainer" style="position: absolute; left:0px; top:0px"></div>
In F_Init()
renderer = new THREE.WebGLRenderer( {antialias:true} );
DOM_container = document.getElementById( 'ThreeJScontainer' );
DOM_container.appendChild( renderer.domElement );
renderer.setSize( window.innerWidth, window.innerHeight );
controls = new THREE.TrackballControls( scene01camera02 , DOM_container);
document.addEventListener( 'mousemove', onDocumentMouseMove, false ); //works OK
document.addEventListener( 'mousedown', onDocumentMouseDown, false );
document.addEventListener('click', SOW_onDocumentMouseClick, false); //works OK
//in SOW_onDocumentMouseClick event handler
// I reset the controls to point to a new scene_camera according to the viewport clicked on.
//Example:-
controls = new THREE.TrackballControls( scene01camera01 , DOM_container);
//if onDocumentMouseDown was working as I expected I would do the resetting in there
In F_Update()
controls.update();
In F_Render()
renderer.setViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
renderer.clear();
//...BOTTOM STRIP (DASHBOARD)
renderer.setViewport( bottomPanelXmin, bottomPanelYmin, bottomPanelWidth, bottomPanelHeight );
renderer.render( scene02, scene02camera04 );
// etc
// etc for other "Panels" (my name for viewports)
Пример прототипа, работающего по адресу: - http://www.zen226082.zen.co.uk/TRI_VP.html (лучше всего в Chrome или Opera, проблемы с выравниванием в Firefox).
TrackballControls
? - person IceCreamYou   schedule 16.09.2013TrackballControls
, затемaddEventListener( 'mousedown', ...)
захватывается в том же контейнере, что и мой контекст webgl. Надеюсь это поможет - person Darryl_Lehmann   schedule 16.09.2013controls.reset();
, это может быть нежелательно, так как ориентация будет сброшена в начальные положения. Если это так, вы можете попробовать установитьcontrols.target0
,controls.position0
иcontrols.up0
перед выполнениемcontrols.reset()
- person Darryl_Lehmann   schedule 18.09.2013