Anders and Briegel in Python
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

49 行
1.4KB

  1. var mouse = {};
  2. mouse.wasClick = true;
  3. mouse.raycaster = new THREE.Raycaster();
  4. mouse.onFreeMove = function(){console.log("Free move");};
  5. mouse.onDrag = function(){console.log("Drag");};
  6. mouse.onClick = function(){console.log("Click");};
  7. mouse.onCtrlClick = function(){console.log("Ctrl-click");};
  8. mouse.onShiftClick = function(){console.log("Shift-click");};
  9. mouse.prepare = function(){
  10. var el = gui.renderer.domElement;
  11. el.addEventListener("mousedown", mouse.onDown);
  12. el.addEventListener("mouseup", mouse.onUp);
  13. el.addEventListener("mousemove", mouse.onMove);
  14. };
  15. mouse.onDown = function(event){
  16. mouse.wasClick = true;
  17. mouse.pressed = true;
  18. };
  19. mouse.onUp = function(event){
  20. if (!mouse.wasClick){return;}
  21. mouse.pressed = false;
  22. if (event.ctrlKey){mouse.onCtrlClick();}
  23. else if (event.shiftKey){mouse.onShiftClick();}
  24. else {
  25. mouse.onClick();
  26. }
  27. };
  28. mouse.onMove = function(event) {
  29. mouse.wasClick = false;
  30. mouse.position_absolute = {x: event.clientX, y:event.clientY};
  31. mouse.position_relative = {x: (event.clientX / window.innerWidth) * 2 - 1,
  32. y: -(event.clientY / window.innerHeight) * 2 + 1};
  33. gui.setInfoPosition(mouse.position_absolute);
  34. mouse.raycaster.setFromCamera(mouse.position_relative, gui.camera);
  35. mouse.ray = mouse.raycaster.ray;
  36. if (mouse.pressed){
  37. mouse.onDrag();
  38. } else {
  39. mouse.onFreeMove();
  40. }
  41. };