# wanneer — coöperatieve gebeurtenisscripts [Syntaxis en waarden](LEESMIJ.md) Gebeurtenisscripts staan op programmaniveau. Alleen deze directe aanroepen zijn toegestaan als gebeurtenisbeschrijving: | Kop | Betekenis | |---|---| | `wanneer gestart():` | Eén uitvoering na gewone initialisatie. | | `wanneer na(1):` | Eén uitvoering na een vaste vertraging. | | `wanneer berichtOntvangen("start"):` | Uitvoering bij een exact overeenkomend bericht. | | `wanneer toetsGedrukt("space"):` | Uitvoering bij de overgang van los naar ingedrukt. | | `wanneer aanwijzerGedrukt("primary"):` | Eén uitvoering bij een geaccepteerde primaire druk binnen het beeld. | | `wanneer aanwijzerLosgelaten("primary"):` | Eén uitvoering bij echt loslaten van dezelfde geclaimde aanwijzer. | | `wanneer aanwijzerGeklikt("primary"):` | Eén uitvoering als indrukken en loslaten binnen het beeld plaatsvonden. | `na` vereist een direct eindig getalliteral van 0 tot en met 10 seconden; variabelen en berekende waarden zijn hier niet toegestaan. Een positieve vertraging kleiner dan 1 ms wordt minimaal 1 ms. Berichten en toetsen vereisen een niet-lege tekstliteral. Bij aanwijzers moet de literal exact `"primary"` zijn. Dit zijn gegevenswaarden; schrijf dus niet `"primair"` of `"spatie"`. ```pliro # taal: nl laat klikken = 0 wanneer gestart(): wisScherm("wit") wanneer aanwijzerGeklikt("primary"): zet klikken = klikken + 1 cirkel(aanwijzerX(), aanwijzerY(), 12, "blauw") zeg "Aantal klikken:", klikken ``` Gewone opdrachten initialiseren eerst het programma. Daarna worden scripts coöperatief ingepland. `gestart` begint in bronvolgorde; alle `na`-scripts gebruiken hetzelfde tijdanker na initialisatie. Gelijke deadlines behouden de bronvolgorde; `na(0)` komt achter het gestarte werk. Een timer vuurt eenmaal en houdt daarna zelf geen inactieve sessie open. `wacht` parkeert alleen het actieve script. `zendBericht` zet alle exact passende scripts in bronvolgorde klaar en geeft andere scripts een beurt. Globale variabelen worden gedeeld; lokale variabelen horen bij de afzonderlijke aanroep. Blijvende toets- en aanwijzerscripts houden het programma actief totdat het wordt gestopt, afgesloten of door een fout beëindigd. De host moet iedere vereiste invoercapaciteit ondersteunen. Toetsherhaling van het besturingssysteem veroorzaakt geen nieuwe drukgebeurtenis. Een primaire druk binnen het logische beeld claimt één aanwijzer. Echt loslaten van die aanwijzer levert eerst een loslaatgebeurtenis op, ook buiten het beeld; alleen binnen het beeld volgt ook een klik. Annuleren, verloren capture, extra of dubbele drukken en niet-primaire aanwijzers leveren geen loslaten of klik op. Een al geaccepteerde druk wordt niet teruggenomen. `aanwijzerX()` en `aanwijzerY()` lezen een onveranderlijke opname van de gebeurtenis. Bij druk/klik is x `0..639` en y `0..359`; bij loslaten zijn dit naar beneden afgeronde 32-bits coördinaten met teken, ook buiten het beeld, zonder vastzetten aan de rand. De opname blijft beschikbaar tijdens wachten en functieaanroepen van hetzelfde script; afzonderlijk ingeplande scripts erveren haar niet. Eén soort handler registreren is voldoende. Er zijn nog geen periodieke timers, aanwijzerbeweging, slepen, GPIO-flanken of spritegebeurtenissen. Gebeurtenisbeschrijvingen zijn geen gewone functiewaarden of aanroepen buiten een `wanneer`-kop. ## Gerelateerde lemma’s [Syntaxis en waarden](LEESMIJ.md) · [Ingebouwde functies](../ingebouwde-functies/LEESMIJ.md) · [Programmeergidsen](../gidsen/LEESMIJ.md)