Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Применение функций для работы с клавиатурой

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Кликните на дисплейном окне Processing и начните нажимать на клавиши с буквами – это начнет «печатать» на экране разноцветные квадраты. Функция keyPressed() вызывается при нажатии на клавишу. Еще одна функция для работы с клавиатурой – это keyReleased(); она вызывается, когда пользователь отпускает клавишу.

Пример

  1. int maxHeight = 40;
  2. int minHeight = 20;
  3. int letterHeight = maxHeight;  // высота «букв»
  4. int letterWidth = 20;          // ширина «букв»
  5.  
  6. int x = -letterWidth;          // позиция X для «букв»
  7. int y = 0;                     // позиция Y для «букв»
  8.  
  9. boolean newletter;              
  10.  
  11. int numChars = 26;      // в алфавите 26 символов
  12. color[] colors = new color[numChars];
  13.  
  14. void setup() {
  15.   size(640, 360);
  16.   noStroke();
  17.   colorMode(HSB, numChars);
  18.   background(numChars/2);
  19.   // задаем цветовой тон для каждой клавиши:
  20.   for(int i = 0; i < numChars; i++) {
  21.     colors[i] = color(i, numChars, numChars);    
  22.   }
  23. }
  24.  
  25. void draw() {
  26.   if(newletter == true) {
  27.     // рисуем «букву»:
  28.     int y_pos;
  29.     if (letterHeight == maxHeight) {
  30.       y_pos = y;
  31.       rect( x, y_pos, letterWidth, letterHeight );
  32.     } else {
  33.       y_pos = y + minHeight;
  34.       rect( x, y_pos, letterWidth, letterHeight );
  35.       fill(numChars/2);
  36.       rect( x, y_pos-minHeight, letterWidth, letterHeight );
  37.     }
  38.     newletter = false;
  39.   }
  40. }
  41.  
  42. void keyPressed()
  43. {
  44.   // если клавиша между «А» (65) и «Z», а также между «а» и «z» (122):
  45.   if((key >= 'A' && key <= 'Z') || (key >= 'a' && key <= 'z')) {
  46.     int keyIndex;
  47.     if(key <= 'Z') {
  48.       keyIndex = key-'A';
  49.       letterHeight = maxHeight;
  50.       fill(colors[keyIndex]);
  51.     } else {
  52.       keyIndex = key-'a';
  53.       letterHeight = minHeight;
  54.       fill(colors[keyIndex]);
  55.     }
  56.   } else {
  57.     fill(0);
  58.     letterHeight = 10;
  59.   }
  60.  
  61.   newletter = true;
  62.  
  63.   // обновляем позицию «буквы»:
  64.   x = ( x + letterWidth );
  65.  
  66.   // делаем перенос в начало новой строки
  67.   // (когда строка закончится, печать начнется на новой строке):
  68.   if (x > width - letterWidth) {
  69.     x = 0;
  70.     y+= maxHeight;
  71.   }
  72.  
  73.   // делаем перенос в начало экрана
  74.   // (когда экран закончится, печать вернется в начало экрана,
  75.   //  то есть в его левую верхнюю часть):
  76.   if( y > height - letterHeight) {
  77.     y = 0;      // reset y to 0
  78.   }
  79. }

См.также

Внешние ссылки

  1. processing.org - Keyboard Functions. Modified from code by Martin. Original 'Color Typewriter' concept by John Maeda.