Programar 202: Eventos e Interação com o Utilizador

This is a stub / Este artigo é um rascunho. Editado 2019-004-05

TOC:

  • Eventos (Mouse e Keyboard);
  • Escrever texto no ecrã com Strings e os respetivos métodos, bem como o uso de [PFont] fontes(revisão de funções com parâmetros e o pushMatrix)
  • E, por fim, como preparação para [finalmente] os objetos que vamos abordar para a semana, estivemos a injetar esteroides nos vetores — usámos finalmente vetores multidimensionais (Arrays 2D)

O modo dinâmico tira partido da interação com o utilizador. A forma principal de usar apps é co o rato e teclado. para isso, é necessário compreender como funcionam os Input & Events [functions]:

Mouse

Usámos especificamente este evento para detetar cliques:
mousePressed()

É necessário ver também as seguintes funções:
mouseClicked()
mouseDragged()
mouseMoved()
mouseReleased()
mouseWheel()

Caso sejam usados como verificações (por exemplo no meio objetos, para detetar o/qual o clique ou colisões…?), é necessário conhecer as propriedades/palavras reservadas:

mouseButton
mousePressed

Estas, na realidade já estamos a usar há mais de uma semana…
mouseX
mouseY
pmouseX
pmouseY

Depois também usámos o teclado:

keyPressed()
key
keyCode

keyReleased()
keyTyped()
keyPressed


Juntamente com o teclado, começamos a escrever no ecrã com texto/fontes

Typography

PFont

Loading & Displaying

createFont() (não usámos… não recomendo nesta fase)
loadFont()
text()
textFont()

Ver também:

Attributes

textAlign()
textLeading()
textMode()
textSize()
textWidth()

Metrics

textAscent()
textDescent()

Usar texto, desenhando diretamente, ou interagindo (escrevendo) com o teclado é preciso usar/conhecer Strings (Composite data/variables)

String

À medida que escrevemos no no teclado, manipulamos as variáveis / dados / chars / letras do string, uma-a-uma, ou muitas-a-muitas! Para isso, foi necessário conhecer pelo menos um par de métodos:

length()
substring()

Que são super úteis também para compreender e usar (de forma semelhante nos vetores)

Mais métodos importantes:

equals()
indexOf()
toLowerCase()
toUpperCase()
charAt()

Ver também outras funções e métodos importantes

String Functions

join()
match()
matchAll()
nf()
nfc()
nfp()
nfs()
split()
splitTokens()
trim()

Finalmente, ampliámos a matéria sobre vetores (Arrays) passando a usar vetores bi-dimensionais:

Composite

Array

Embora só na T1 da tarde — e ainda assim, só na teoria porque só consegui colocar a coisa a funcionar depois da aula — foi abordado o conceito de append() para ampliar o vetor à medida que precisamos.

append()

Para manipular arrays é necessário conhecer os métodos e funções específicas:

Array Functions


arrayCopy()
concat()
expand()
reverse() >> já tinha visto isto com o Antão no P1
shorten()
sort()
splice() >> estas duas funcionam de forma muito semelhante às funcções/métodos de string
subset()

Como usámos vetores bidimensionais, o append implicou a leitura de um parágrafo específico no reference:

When using an array of objects, the data returned from the function must be cast to the object array’s data type. For example: SomeClass[] items = (SomeClass[]) append(originalArray, element)

// can you add more objects to the array? eg. add new where clicked
// check append(): https://processing.org/reference/append_.html
// specifically this part: SomeClass[] items = (SomeClass[]) append(originalArray, element)

Na próxima aula/módulo/tópico vão ser abordados objetos… e daí passar para modo

Composite

ArrayList

MOVE to 201—Exercise 1: Make 3 star destroyers circle around Aalderaan

MOVE to 201—Xtra 1: Make 3 tie fighers circle each star destroyer. Make each ship avoid the mouse (eg. 100 px radius)