TUI eli Tommin UI-kirjasto sisältää erilaisia käyttäjien syötteiden käsittelyä helpottavia toimintoja, joita Processing ei normaalisti tue kuten:
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):
My Documents/Processing/libraries
~/Documents/Processing/libraries
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.
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();
}
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();
}