starting a new string by pressing return

edited February 2016 in Questions about Code

hi people! i wrote a simple code just to write something live in the sketch window. i want to finish this string and start a new one by pressing return, because i want then to write with another font. i tried a few things, but i cannot make more than one string at the same time and writing directly in the sketch window.. i dont know why..

here is the code: PFont myFont; //myFont als PFont deklarieren String typedWord = "";//String deklarieren

void setup() { 
  size(displayWidth, displayHeight);//grösse des Sketchfensters

    myFont = createFont("CENTURY.ttf", 100);//kreiere PFont als myFont
    //myFont = createFont("AAA.ttf", 100);//kreiere PFont als myFont


  textFont(myFont);  //benutze myFont als TextFont

  fill(255);//Füllfarbe der Schrift
}

void draw() {
  background(0);//Hintergrundfarbe
  text(typedWord, displayWidth/16, displayHeight/16*3);//Stringwahl und Anfangsposition  
}

void keyPressed() {
  println(key); //schreibe den aktuellst getippten Buchstaben in die Konsole
  if (key!=1) {
    if (keyCode == BACKSPACE) { //Anweisung um einen Buchstaben aus dem String löschen zu können
  if (typedWord.length() > 0) {
    typedWord = typedWord.substring(0, typedWord.length()-1); //erases the last character
  }
    }
    else { //Anweisung den getippten Buchstaben zum String zu addieren
  typedWord += key; 
    }
  }

}

Answers

  • Answer ✓

    das ist nicht ganz einfach...

    in theory you need to put the finished word (after you hit return) into a list (array or ArrayList) and display that list - but each line with another font....

    here is version with single variables of text for each line

    PFont myFont, myFont2; //myFont als PFont deklarieren 
    String typedWord = "";//String deklarieren
    
    String typedWordFinished = "";//String deklarieren
    String typedWordFinished2 = "";//String deklarieren
    
    int counter=0;
    
    void setup() { 
      size(displayWidth, displayHeight);//grösse des Sketchfensters
    
      myFont = createFont("Arial", 22);//kreiere PFont als myFont
      myFont2 = createFont("Times", 25);//kreiere PFont als myFont
    
    
      textFont(myFont);  //benutze myFont als TextFont
    
      fill(255);//Füllfarbe der Schrift
    }
    
    void draw() {
      background(0);//Hintergrundfarbe
    
      if (counter==0) {
        // vor dem ersten Return schreibt er das aktuell zu erfassende Wort typedWord
        textFont(myFont);  //benutze myFont als TextFont
        text(typedWord, displayWidth/16, displayHeight/16*3); //Stringwahl und Anfangsposition
      } else if (counter==1) {
        // nach dem ersten Return schreibt er das fertige Wort typedWordFinished und 
        // das aktuell zu erfassende Wort typedWord (in der 2. Zeile)
        textFont(myFont);  //benutze myFont als TextFont
        text(typedWordFinished, displayWidth/16, displayHeight/16*3); //Stringwahl und Anfangsposition
        textFont(myFont2);  //benutze myFont als TextFont
        text(typedWord, displayWidth/16, displayHeight/16*3+43); //Stringwahl und Anfangsposition
      }// if 
      else if (counter==2) {
        // nach dem 2. Return schreibt er das fertige Wort typedWordFinished und 
        // das Wort typedWordFinished (in der 2. Zeile)
        textFont(myFont);  //benutze myFont als TextFont
        text(typedWordFinished, displayWidth/16, displayHeight/16*3); //Stringwahl und Anfangsposition
        textFont(myFont2);  //benutze myFont als TextFont
        text(typedWordFinished2, displayWidth/16, displayHeight/16*3+43); //Stringwahl und Anfangsposition
        textFont(myFont);  //benutze myFont als TextFont
        text(typedWord, displayWidth/16, displayHeight/16*3+43+43); //Stringwahl und Anfangsposition
      }// if
    }
    
    void keyPressed() {
      println(key); //schreibe den aktuellst getippten Buchstaben in die Konsole
    
      if (key!=1) {
    
        if (keyCode == BACKSPACE) { //Anweisung um einen Buchstaben aus dem String löschen zu können
          if (typedWord.length() > 0) {
            typedWord = typedWord.substring(0, typedWord.length()-1); //erases the last character
          }
        } else if (key==RETURN||key==ENTER) {
          if (counter==0) {
            typedWordFinished=typedWord;
            typedWord="";
          }
          if (counter==1) {
            typedWordFinished2=typedWord;
            typedWord="";
          }
          counter++;
        } else { //Anweisung den getippten Buchstaben zum String zu addieren
          typedWord += key;
        }
      }
    }
    
  • edited February 2016

    hi chris! ja das habe ich befürchtet, aber dein code hilft mir vorerst schon mal sehr viel weiter!

  • wenn du objects / classes kennst, kannst du später damit arbeiten

    jetzt kannst du dir ArrayList verwenden: beide sind parallel, eine für den String, eine für den Font

Sign In or Register to comment.