Changeset edd5ccc in Klonkt


Ignore:
Timestamp:
08/24/2026 07:32:01 AM (2 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
e48ec78
Parents:
27cb1e3
Message:

Lezen op touch: het richten is de snap

Robins regel (24-8): het selecteren van het doel mag de scroll zelf bijsturen.
De gekozen grens krijgt dus geen aparte snap-animatie met een eigen duur meer;
de lopende uitloop krijgt het nieuwe doel, met dezelfde demping
(syncTouchLerp) waarmee hij al onderweg is. Een doorlopende beweging die op de
lijn eindigt, in plaats van een glijvlucht met halverwege een muur.

De beoordeling verschoof daarvoor van 150ms naar een timeout van 0: het
virtual-scroll-event komt binnen voordat lenis de touchend verwerkt, een tik
later staat targetScroll op de echte landing en sturen we meteen bij.

MOD_V naar 58.

Co-Authored-By: Claude Fable 5 <noreply@…>

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/read.js

    r27cb1e3 redd5ccc  
    476476      vertrek = lenis.scroll;
    477477      clearTimeout(raakTimer);
     478      // TIMEOUT 0, geen 150ms. Dit event komt binnen VOOR lenis zelf de
     479      // touchend verwerkt (de emit staat in de bron boven de verwerking), dus
     480      // targetScroll is hier nog het oude doel. Een tik later is de uitloop
     481      // gestart en staat targetScroll op de echte landing -- en dan sturen we
     482      // hem meteen bij, in plaats van de uitloop 150ms te laten lopen en er
     483      // dan een aparte snap-animatie overheen te zetten.
    478484      raakTimer = setTimeout(() => {
    479         if (!laatsteRichtingOmlaag) return;
     485        if (!laatsteRichtingOmlaag || snap.isStopped) return;
    480486        const doel = lenis.targetScroll;   // de echte landing, niet de raakdelta
    481487        const punten = snap.computeSnaps();
     
    492498        });
    493499        if (eerste < 0) return;            // niets meer voor je: vrij uitscrollen
    494         if (doel >= punten[eerste].value - vangZone()) echtGaNaar(eerste);
    495       }, 150);
     500        // HET RICHTEN IS DE SNAP (Robins regel, 24-8): geen aparte animatie
     501        // met een eigen duur, maar de lopende uitloop een nieuw doel geven,
     502        // met DEZELFDE demping (syncTouchLerp) waarmee hij al onderweg is.
     503        // Zo is er een doorlopende beweging die toevallig op de lijn eindigt,
     504        // in plaats van een glijvlucht met halverwege een muur.
     505        if (doel >= punten[eerste].value - vangZone()) {
     506          lenis.scrollTo(punten[eerste].value, { lerp: 0.09, force: true, userData: { initiator: 'snap' } });
     507        }
     508      }, 0);
    496509    });
    497510  }
  • src/views/shell.ejs

    r27cb1e3 redd5ccc  
    505505  // Eén nummer voor de hele map. Te vaak bumpen kost één download; te weinig
    506506  // bumpen kost een bugfix die nooit aankomt.
    507   var MOD_V = 57;
     507  var MOD_V = 58;
    508508
    509509  // name -> 1 (aan het laden) of de module-namespace (geladen). Een module
Note: See TracChangeset for help on using the changeset viewer.