TUI eli Tommin UI-kirjasto sisältää erilaisia käyttäjien syötteiden käsittelyä helpottavia toimintoja, joita Processing ei normaalisti tue kuten:

Kirjaston asentaminen

TUI on kirjasto, joka tarjoaa lisää komentoja Processing ohjelmaasi, mutta koska se ei kuulu normaaliin Processing ympäristöön se pitää asentaa ja ottaa käyttöön ohjelmassasi. TUI on helppo asentaa lataamalla tui2.0.zip tiedosto täältä ja purkamalla sen sisältö sketchbook:in kansioon libraries, joka yleensä löytyy näistä paikoista (jos et ole itse mennyt sitä siirtämään):

Käynnistä vielä Prosessing editori uudestaan, jotta se havaitsee uuden kirjaston. Nyt tui pitäisi löytyä valikosta: Sketch -> Import Library ja listan pohjalta pitäisi löytyä TUI.

Saat kirjaston toiminnot käyttöösi kirjoittamalla import tui.*; ohjelman alkuun. Lisää myöskin komento TUI.aloita(this); setup-metodiin. Muuten mikään TUI:n toiminnoista ei tule toimimaan.

Painike

Pinikkeet ovat näytölle piirrettäviä nappeja, joita klikkaamalla käyttäjä voi tehdä jotain. Uuden painikeen voi luoda ja tallettaa komenolla:

Painike painike = new Painike("Painikkeen teksti", x, y);

Jotta painikkeita voi klikata pitää TUI:lle kertoa kun hiirtä klikataan:

// Tämä metodi suoritetaan aina kun hiirtä klikataan
void mousePressed() {
  // Jotta painikkeet toimivat hiiren painallukset pitää raportoida
  TUI.huomaa_hiiren_painallus();
}

TUI.piirra_painikkeet(); piirtää kaikki painikkeet näytölle.

Esim. seuraavassa ohjelmassa on kaksi painiketta. Yritäpä klika toista niistä!

import tui.*;

// Esitellään kaksi painiketta joiden tyyppi on Painike
Painike painike1;
Painike painike2;

void setup() {
  size(400, 600);
  // Tämä tarvitaan, jotta TUI tietää mihin ikkunaan piirretään
  TUI.aloita(this);
  // Luodaan painikkeet ja talletetaan ne
  painike1 = new Painike("Ei onnistu", 100, 200);
  painike2 = new Painike("Klikkaa mua", 100, 100);
}

void draw() {
  // Niin kauan kuin painike1 on hiiren kohdalla, siirretään se
  // uuteen satunnaiseen paikkaan.
  while (painike1.kursori_kohdalla()) {
    painike1.x = int(random(0, width - painike1.leveys));
    painike1.y = int(random(0, height - painike1.korkeus));
  }
  // Piirretään painikkeet
  background(200, 0.2);
  TUI.piirra_painikkeet();
}

// Tämä metodi suoritetaan aina kun hiirtä klikataan
void mousePressed() {
  // Jotta painikkeet toimivat hiiren painallukset pitää raportoida
  TUI.huomaa_hiiren_painallus();
}

Nappitarkkailija

TUI:n nappitarkkailija ominaisuus auttaa korjaamaan yhden ärsyttävän ongelman Processing ohjelmissa. Processing tarjoaa muuttujat key ja keyCode, joissa on tallessa tieto siitä mikä näppäin on painettu viimeksi. Näiden apuna on muuttuja keyPressed, jossa on tallessa tieto onko jokin näppäin sillä hetkellä painettuna.

Tämä on kätevää jos ohjelmassasi käytetään vain yhtä näppäintä kerrallaan, mutta jos pelissäsi esimerkiksi liikutaan vasemalle pitämällä a-näppäintä pohjassa ja hypätään välilyönnillä, niin hypättyäsi viimeisin painettu nappi ei ole enää a etkä enää liiku vasemmalle vaikka olisit pitänyt näppäintä pohjassa koko ajan.

Esim. seuraava ohjelma yrittää värjätä taustan punaiseksi jos A näppäintä painetaan, mutta yritäpä pitää A näpppäin pohjassa ja paina välilyötiä.

void setup() {
  size(400, 600);
}

void draw() {
  background(200);
  // Jos jokin näppäin on painettu
  if (keyPressed) {
    // Ja viimeksi painettu näppäin on 'a'
    if (key == 'a') {
      background(255, 0 , 0);
    }
  }
}

Nappitarkkailija korjaa kyseisen ongelman ja pitämällä kirjaa siitä mitkä näppäimet ovat painettuina. Jotta nappitarkkailija toimii sille pitää raportoida kun näppäimiä painetaan ja vapautetaan. Raportointi tehdään näin:


// Tämä metodi suoritetaan aina kun jokin näppäin painetaan pohjaan
void keyPressed() {
  // Jotta nappitarkkailija toimii näppäinten painallukset pitää raportoida
  TUI.huomaa_painallus();
}

// Tämä metodi suoritetaan aina kun jokin näppäin vapautetaan
void keyReleased() {
  // Jotta nappitarkkailija toimii näppäinten vapautukset pitää raportoida
  TUI.huomaa_vapautus();
}

Kun raportointi on kunnossa TUI:lta voi kysyä onko jokin painike painettunaTUI.nappain_painettu('A')

Esim. seuraava ohjelma hyödyntää nappitarkkailijaa ja korjaa edellisen esimerkin ongelman.

import tui.*;

void setup() {
  size(400, 600);
  // Tämä tarvitaan, jotta TUI tietää mihin ikkunaan piirretään
  TUI.aloita(this);
}

void draw() {
  background(200);
  // Jos jokin a näppäin on painettu
  if (TUI.nappain_painettu('A')) {
    background(255, 0 , 0);
  }
}

// Tämä metodi suoritetaan aina kun jokin näppäin painetaan pohjaan
void keyPressed() {
  // Jotta nappitarkkailija toimii näppäinten painallukset pitää raportoida
  TUI.huomaa_painallus();
}

// Tämä metodi suoritetaan aina kun jokin näppäin vapautetaan
void keyReleased() {
  // Jotta nappitarkkailija toimii näppäinten vapautukset pitää raportoida
  TUI.huomaa_vapautus();
}