Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!