Працюємо з клавіатурою в Processing

Ще один спосіб взаємодії людини і компютера – клавіатура Клавіатура, поряд з мишею, є найбільш відомим пристроєм для взаємодії з компютером З Processing ви можете без праці визначити, коли користувач натискає клавішу або відпускає її Для виконання фрагментів коду призначаються певні клавіші Це найпростіший спосіб створити інтерфейс з користувачем в Processing Наприклад, клавіша D може бути запрограмована для перемикання режимів отлідкі у вашому додатку, а клавіша S – для збереження намальованою композиції в графічному форматі

Як це робиться

Почнемо з оголошення змінних і функцій setup () і draw () У цьому прикладі ми напишемо нескладний скетч Processing, що міняє значення змінних при натисканні на певні клавіші на клавіатурі

int x int y int r color c

boolean drawStroke void setup()

{

size( 480, 320 )

smooth() strokeWeight( 2 )

x = width/2 y = height/2 r = 80

c = color( 255, 0, 0 ) drawStroke = true

}

void draw()

{

background( 255 )

if ( drawStroke == true ) { stroke( 0 )

} else { noStroke()

}

fill( c )

ellipse( x, y, r*2, r*2 )

}

Наступний фрагмент коду буде займатися подіями клавіатури Ми використовуємо три функції: keyPressed (), keyReleased () і keyTyped ()

void keyPressed()

{

if ( key == CODED ) {

if ( keyCode == RIGHT ) { x += 10

} else if ( keyCode == LEFT ) { x -= 10

} else if ( keyCode == UP ) { y -= 10

} else if ( keyCode == DOWN ) { y += 10

}

}

x = constrain( x, r, width-r ) y = constrain( y, r, height-r )

}

void keyReleased()

{

switch ( key ) { case r:

c = color( 255, 0, 0 ) break

case g:

c = color( 0, 255, 0 ) break

case b:

c = color( 0, 0, 255 ) break

case c:

c = color( 0, 255, 255 ) break

case m:

c = color( 255, 0, 255 ) break

case y:

c = color( 255, 255, 0 ) break

default: break

}

}

void keyTyped()

{

if ( key == s ) { drawStroke = drawStroke

}

}

Результат додатки виглядає так, як на скріншоті:

Для переміщення кола використовуються стрілки Клавіша S змінює товщину штриха Клавіші R, G, B, C, M і Y змінюють колір кола

Як це працює

У Processing існує три функції, що реагують на події клавіатури: keyPressed (), keyReleased () і keyTyped () Ці функції працюють трохи пазному Функція keyPressed () виконується, коли ви натискаєте на клавішу Вона знадобиться вам, коли ви захочете зробити пряму взаємодію з компютером Функція keyReleased () виконується, коли ви відпускаєте клавішу Це корисно, коли ви натискаєте на клавішу, а зміна в додатку спрацьовує при її відпусканні Функція keyTyped () працює так само, як keyPressed (), але ігнорує спеціальні клавіші типу стрілок, Enter, Ctrl і Alt

f Вбудована змінна key містить значення останньої натиснутої клавіші

f Вбудована змінна keyCode використовується для зберігання останньої натиснутої спеціальної клавіші на зразок Shift, Ctrl або стрілки Швидше за все, ви використовуєте її в блоці if, перевіряє, чи є клавіша додаткової, так, як у функції keyPressed () в цьому прикладі keyCode приймає значення UP, DOWN, LEFT, RIGHT, ALT, CONTROL, SHIFT, BACKSPACE, TAB, ENTER, RETURN, ESC і DELETE

f Вбудована змінна keyPressed є логічної змінної

Значення цієї змінної істинно, якщо яка-небудь клавіша натиснута і помилково, коли жодна з клавіш не натискати Цю змінну зручно використовувати в функції draw ()

f Функція keyPressed () виконується один раз при натисканні клавіші

f Функція keyReleased () виконується один раз при відпуску клавіші

f Функція keyTyped () виконується, коли ви натискаєте клавішу для набору тексту Клавіші Alt, Ctrl або Shift у цій функції ігноруються

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*