Processing:Примеры/Применение функций для работы с клавиатурой
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Кликните на дисплейном окне Processing и начните нажимать на клавиши с буквами – это начнет «печатать» на экране разноцветные квадраты. Функция keyPressed() вызывается при нажатии на клавишу. Еще одна функция для работы с клавиатурой – это keyReleased(); она вызывается, когда пользователь отпускает клавишу.
Пример
int maxHeight = 40;
int minHeight = 20;
int letterHeight = maxHeight; // высота «букв»
int letterWidth = 20; // ширина «букв»
int x = -letterWidth; // позиция X для «букв»
int y = 0; // позиция Y для «букв»
boolean newletter;
int numChars = 26; // в алфавите 26 символов
color[] colors = new color[numChars];
void setup() {
size(640, 360);
noStroke();
colorMode(HSB, numChars);
background(numChars/2);
// задаем цветовой тон для каждой клавиши:
for(int i = 0; i < numChars; i++) {
colors[i] = color(i, numChars, numChars);
}
}
void draw() {
if(newletter == true) {
// рисуем «букву»:
int y_pos;
if (letterHeight == maxHeight) {
y_pos = y;
rect( x, y_pos, letterWidth, letterHeight );
} else {
y_pos = y + minHeight;
rect( x, y_pos, letterWidth, letterHeight );
fill(numChars/2);
rect( x, y_pos-minHeight, letterWidth, letterHeight );
}
newletter = false;
}
}
void keyPressed()
{
// если клавиша между «А» (65) и «Z», а также между «а» и «z» (122):
if((key >= 'A' && key <= 'Z') || (key >= 'a' && key <= 'z')) {
int keyIndex;
if(key <= 'Z') {
keyIndex = key-'A';
letterHeight = maxHeight;
fill(colors[keyIndex]);
} else {
keyIndex = key-'a';
letterHeight = minHeight;
fill(colors[keyIndex]);
}
} else {
fill(0);
letterHeight = 10;
}
newletter = true;
// обновляем позицию «буквы»:
x = ( x + letterWidth );
// делаем перенос в начало новой строки
// (когда строка закончится, печать начнется на новой строке):
if (x > width - letterWidth) {
x = 0;
y+= maxHeight;
}
// делаем перенос в начало экрана
// (когда экран закончится, печать вернется в начало экрана,
// то есть в его левую верхнюю часть):
if( y > height - letterHeight) {
y = 0; // reset y to 0
}
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |