Programming Studio
Events

 

 

I forbindelse med kørsel af et program, kan der forekomme forskellige former for events. Man kan vælge at håndtere disse events ved at lave diverse event-handlere i form af metoder med bestemte signaturer.
Event-handlere bliver udført i selvstændige tråde, der har adgang til globale variable og globale metoder. Man skal i den forbindelse være opmærksom på om event-handlerne direkte eller indirekte kan komme til at tilgå globale variable; hvis erklæring endnu ikke er blevet udført. Den eneste form for events hvor dette reelt kan være et problem (med mindre man stiller det meget uheldigt op) er tick events, som man ikke bør starte før de globale variable der kan vedrøre dem er blevet erklæret. Hvis en global variable endnu ikke er klæret når en event-handler forsøger at tilgå den, stopper programmet med en fejl.

 

Keyboard events

I forbindelse med at PixelPanel-vinduet har fokus, kan der modtages events når der trykkes på en tast (bogstaver, cifre og visse andre taster). Dette gøres ved at lave følgende globale metode:

void handleKeyDown( char c )

Dette kan være bogstaver (de små) og cifre (0..9), eller et af følgende special-tegn, der er erklæret i class Key:
Key.Left
Key.Right
Key.Up
Key.Down

Key.Escape
De første fire refererer til pile-tasterne.
Svarende til dette findes også:

void handleKeyUp( char c )

der kaldes når et tast ikke længere er trykket ned.

 

Mouse events

Ligeledes når PixelPanel-vinduet har fokus, kan der modtages events når der klikkes med musen på en pixel. Dette gøres ved at lave følgende globale metode:

void handleMouseClick( int x, int y )

Koordinaterne der modtages er for den pågældende pixel (pt. skifter dette ikke med flipY-metoden, men det vil blive lavet).

 

Tick events

Tick events anvendes til at styre timing, f.eks. i forbindelse med animationer og spil.
Man kan håndtere tick-events ved at lave følgende globale metode:

void handleTick()

Som udgangspunkt forekommer der ikke nogen tick events. Det er noget man skal slå til. Man kan styre forekomsten af tick events med følgende metoder:
void tickDelay( double secs );
void tickStart();
void tickStop();
Starter man tick events med tickStart-metoden, vil handleTick-metoden blive kaldt én gang hvert sekund (i.e. 1Hz). Man kan indstille hvor ofte disse events forekommer ved at sætte pausen mellem tick events med tickDelay-metoden. Selvom man ofte vil gøre dette før man starter tick events, kan det også ændres mens tick events er slået til. tickStop-metoden stopper tick events, man kan efterfølgende starte tick events igen.