Мне нужно написать программу набора текста для создания «трехстрочного» текстового редактора. Если длина входной строки больше, чем строка (40 символов), она будет автоматически перемещена на следующую строку.
Это мой код:
String word = "";
void setup() {
size(1000, 600);
textSize(26);
fill(0);
}
void draw() {
background(255);
text(word, 0, 0, width, height);
}
void keyPressed() {
int lineBreak = word.length();
if(lineBreak > 39) {
word = word + "\n";
}
else {
word = word + key;
}
}
Всякий раз, когда я запускаю проблему, длина строки останавливается на 40 символах, но не переходит на следующую строку.
1 ответ
text()
не поддерживает разрывы строк. Вы должны хранить каждую строку в отдельной строке. Например, используйте StringList
для хранения строк текста.
Создайте массив строк, в котором хранятся готовые строки. Текущая строка по-прежнему хранится в word
:
StringList lines = new StringList();
Когда лимит линии достигнут, добавьте строку в список и начните новую строку:
if(lineBreak > 39) {
lines.append(word);
word = "";
}
Определите lineheight
и нарисуйте линии в цикле. Вертикальное положение строки вычисляется как lineheight * (i + 1)
, где i
— индекс строки:
int lineheight = 30;
for (int i = 0; i < lines.size(); i++) {
String line = lines.get(i);
text(line, 0, lineheight * (i + 1));
}
text(word, 0, lineheight * (lines.size() + 1));
См. Пример:
StringList lines = new StringList();
String word = "";
void setup() {
size(1000, 600);
textSize(26);
fill(0);
}
void draw() {
background(255);
int lineheight = 30;
for (int i = 0; i < lines.size(); i++) {
String line = lines.get(i);
text(line, 0, lineheight * (i + 1));
}
text(word, 0, lineheight * (lines.size() + 1));
}
void keyPressed() {
int lineBreak = word.length();
if(lineBreak > 39) {
lines.append(word);
word = "";
}
else {
word += key;
}
}
Похожие вопросы
Новые вопросы
processing
Обработка - это язык программирования с открытым исходным кодом и среда для людей, которые хотят создавать изображения, анимацию, взаимодействия и игры.