Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
Determinar la distancia de desplazamiento en la página web para el desplazamiento sincronizado de la vista de Paper.js

Tengo un lienzo absolutamente posicionado sobre una página web. El lienzo tiene algunos elementos creados con Paper.js. Quiero que el lienzo (o la vista) se mueva en sincronía con el desplazamiento de la página web.

El lienzo cubre toda la pantalla (1920 x 1080) no la página web (1920 x longitud variable). Por lo tanto, simplemente cambiar la posición fija del lienzo no funciona. Ya no se superpone en toda la pantalla.

Más tarde, descubrí vistas en Paper.js y puedo usar la siguiente línea para desplazarme por la vista:

 project.view.scrollBy(new Point(0, 450));

El problema es que no puedo averiguar el valor que necesito poner en 450 para que el desplazamiento esté siempre sincronizado.

Utilizo el siguiente JavaScript para animar la acción de desplazamiento en la página web cuando se presionan las teclas arriba y abajo:

 $("section.scrollable").animate({scrollTop : $("section.scrollable").scrollTop() + 300 })

Sin embargo, poner 300 en los valores de scrollBy tampoco mueve el lienzo y la página web en la sincronización adecuada.

Este bolígrafo es un ejemplo mínimo para mostrar mi problema. Es posible que prefiera verlo en modo de depuración .

Puede arrastrar sobre el lienzo para crear líneas naranjas.

Hay tres encabezados y tres líneas correspondientes dibujadas en un lienzo superpuesto. El lienzo tiene 1920 px de ancho y 1080 px de alto.

El tercer encabezado cae por debajo de 1080 px, por lo que su línea no es visible en el lienzo. Sin embargo, se vuelve visible cuando me desplazo dentro de la vista Papel usando la siguiente línea:

 project.view.scrollBy(new Point(0, 600));

Aquí está mi problema con las siguientes restricciones:

  1. La posición del lienzo tiene que permanecer fija. Por lo tanto, no se desplazará con el resto del documento.
  2. Sin embargo, la vista de Paper.js debe sincronizarse con el documento para que las líneas, las rutas y otros elementos no cambien sus posiciones relativas con respecto a la página web. Por ejemplo, las líneas aún permanecen bajo los mismos encabezados.
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe escuchar el evento de desplazamiento y cada vez que suceda, actualice su escena y posición de paper.js.
En lugar de usar la vista, descubrí que usar la capa activa era más conveniente, pero teóricamente podría hacer lo mismo con la vista.
Aquí hay un violín simple que debería ponerlo en la pista.

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Debug Paper.js</title> <script src="https://unpkg.com/acorn"></script> <script src="https://unpkg.com/paper"></script> <style> html, body { margin : 0; height : 100%; } canvas { position : fixed; top : 0; left : 0; width : 100vw; height : 100vh; } section { max-width : 500px; margin : auto; } </style> </head> <body> <section> <div> <h1>title 1</h1> <p>...</p> </div> <div> <h1>title 2</h1> <p>...</p> </div> </section> <canvas id="canvas" resize></canvas> <script> paper.setup('canvas'); new paper.Path.Circle({ center: paper.view.center, radius: 50, fillColor: 'orange' }); const originalY = paper.view.center.y; const update = () => { const yOffset = document.scrollingElement.scrollTop; paper.view.center.y = originalY - yOffset; }; window.addEventListener('scroll', update); </script> </body> </html>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda