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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
Нет описания правки
Строка 4: Строка 4:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Описание<ref>[https://processing.org/examples/keyboardfunctions.html processing.org - Keyboard Functions. Modified from code by Martin. Original 'Color Typewriter' concept by John Maeda. ]</ref>=
=Описание<ref>[https://processing.org/examples/keyboardfunctions.html processing.org - Keyboard Functions. Modified from code by Martin. Original 'Color Typewriter' concept by John Maeda. ]</ref>=
Строка 114: Строка 114:
}}
}}


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
int maxHeight = 40;
int maxHeight = 40;
int minHeight = 20;
int minHeight = 20;
Строка 218: Строка 218:
|Высота логотипа издателя для schemaNewsArticle=45
|Высота логотипа издателя для schemaNewsArticle=45
}}
}}
{{Навигационная таблица/Справочник языка Processing}}
{{Навигационная таблица/Портал/Processing}}
{{Навигационная таблица/Processing/Примеры}}

Версия от 12:01, 20 мая 2023


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



Описание[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
  }
}

См.также

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