Entonces, tengo un problema en el que la rueda del mouse debe ser un botón siguiente y anterior ... Estoy usando ThreeJS y, dado que esta lógica también se puede implementar en algún área, solo quería expresarlo en ThreeJS. Entonces, mi problema aquí es pensar en una matriz cuya array = [image1,image2,image3] dando eso
let next = 0; let prev = 0; window.addEventListener("mousewheel",(e) => { move += e.wheelDeltaY/1000; next = Math.floor(move + 40) % 2; prev = ( Math.floor(move) + 1 + 40) % 2; console.log(array[next]) console.log(array[prev]) }) Como puede ver, next y prev son un módulo, por lo que solo da un valor de 1 y 0. Ahora, la cuestión es que... dado que tengo 3 matrices, quiero que obtengan entrada en the y next y prev. digamos que yo tenga 10 imágenes de elementos para la array , luego next y prev serán algo como esto [img1,img2] primero siguiente y anterior y luego [img2,img3] ... y así sucesivamente ... pero hasta llegar a [img9,img10] . .debe seguir funcionando como un bucle (al igual que el bucle de los controles deslizantes)
Mi código en ThreeJS es algo como esto
let textures = [ new THREE.TextureLoader().load(mask2), new THREE.TextureLoader().load(mask3), new THREE.TextureLoader().load(mask4), new THREE.TextureLoader().load(mask5), new THREE.TextureLoader().load(mask6), ] let next = 0; let prev = 0; window.addEventListener("mousewheel",(e) => { move += e.wheelDeltaY/1000; next = Math.floor(move + 1000) % 2; prev = ( Math.floor(move) + 1 + 1000) % 2; console.log(next,prev) material.uniforms.t1.value = textures[prev]; material.uniforms.t2.value = textures[next]; })ACTUALIZAR:
next = Math.floor(move + 1000) % textures.length; prev = ( Math.floor(move) + textures.length + 1000) % textures.length;Tengo una respuesta ahora, pero quiero algo mejor que esto... porque quiero hacer específicamente la duración de sus movimientos... Si no puedo responder, está bien, gracias. por ejemplo, la longitud del desplazamiento debe ser 40 o algo más para que no cambie rápidamente.