Tal Input til Processing

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Hvis man ønsker indtaste tal i et Processing-program, så kan det være en besværlig proces at fange de enkelte key-events, og få dem konverteret til et tal.

En hjælp til at løse dette problem kan være et text-input-felt, som det der findes i biblioteket [1]. Biblioteket kan rigtigt mange ting, hvilket kan opleves under dets eksempler.

For at kunne anvende biblioteket skal man have det importeret. Det gør man under Sketch - Import Library - Add Library.

Program-ideen

Programmet indeholder 3 elementer på skærmen:

  • Et tekst-input felt, hvor man skal skrive tallet
  • En knap man skal klikke på for at konvertere teksten til et tal
  • Et text-output som viser tallet, eller hvis konverteringen er svigtet, så en fejlmelding

Programmet ser ud som følger:
Tal input til Processing

Koden til programmet

Programmet består af følgende kode:

import controlP5.*;

ControlP5 cp5;

Textfield textfield;
Button button1;
float number = 0.0;

void setup() {
  size(500, 300);
  PFont font = createFont("arial", 24);

  // Kontakt til ConptrolP5 Biblioteket
  cp5 = new ControlP5(this);

  // Tekst-feltet hvor tallet skal indtastes
  textfield=cp5.addTextfield("input");
  textfield.setPosition(50, 80)
    .setSize(150, 50)
    .setFont(font)
    .setColor(color(255))
    .setColorCursor(color(255))
    .setAutoClear(false)
    .setLabel("")
    ;

  // Knappen der er knyttet til funktionen generate()
  button1=cp5.addButton("generate");
  button1.setPosition(230, 85)
    .setSize(180, 40)
    .setLabel("Læs tallet")
    .setFont(font)
    ;
  textFont(font);
}

void draw() {
  background(0, 151, 156);
  fill(255);
  if (Float.isNaN(number)) {
    text("Tallet er indtastet forkert", 50, 200);
  } else {
    text(number, 50, 200);
  }
}

public void generate() {
  // Tallet hentes som en tekststreng i tekst-feltet input
  String input = cp5.get(Textfield.class, "input").getText();
  input = input.replace(',', '.');  // Accepter dansk komma
  number = float(input);
  textfield.clear();
}

Referencer

  1. ControlP5 [1]