123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import THREE from 'THREE';
- import { debounce } from './utils';
- let raycaster = new THREE.Raycaster();
- export function setEvents(camera, elem,items, type, wait) {
- let listener = function(event) {
-
- let mouse = { //-1更利于手指点击
- x: ((event.clientX - 4 ) / event.target.clientWidth ) * 2 - 1,
- y: -((event.clientY - 4 ) / event.target.clientHeight) * 2 + 1
- };
-
- let vector = new THREE.Vector3();
- vector.set(mouse.x, mouse.y, 0.5);
- vector.unproject(camera);
- raycaster.ray.set(camera.position, vector.sub(camera.position).normalize());
- //console.log(event.type + ": " +mouse.x+", " +mouse.y);
- //console.log(event.type + ": " +event.offsetX+", " +event.offsetY);
- let target = raycaster.intersectObjects(items);
- if(event.type==="click"&&!target.length){//当很快地滑动时会造成target.length==0
- window.lastMouse.x = null;
- window.lastMouse.y = null;
- }
- if (target.length) {
- target[0].type = type;
- target[0].object.dispatchEvent(target[0],event);//改
- }
- };
- if (!wait) {
- (elem||document).addEventListener(type, listener, false);
- } else {
- (elem||document).addEventListener(type, debounce(listener, wait), false);
- }
-
-
- }
|