Animacija i promenljive — pomeranje objekta
primeri u ovoj lekciji pisani su za Processing Python Mode. Ako radiš u preporučenom okruženju Thonny + py5, većina koda ostaje ista, a imena sa velikim slovom u sredini pišu se malim slovima sa donjom crtom:
mouseX → mouse_x, noStroke() → no_stroke(). Pogledaj tabelu razlika.Šta je zapravo animacija?
Animacija u Processing-u je brzo menjanje slike više puta u sekundi.
Funkcija draw() se stalno ponavlja i svaki put crta novu sliku.
Ako u svakom ponavljanju malo promenimo poziciju objekta — dobijamo kretanje.
Animacija = crtanje → pomeranje → crtanje → pomeranje → (više puta u sekundi)
Zašto su promenljive važne?
Promenljive čuvaju stanje objekta — gde se objekat nalazi u svakom trenutku.
- x — horizontalna pozicija
- y — vertikalna pozicija
- dx — brzina po x osi
- dy — brzina po y osi
Jednostavna animacija lopte
x = 50
y = 200
dx = 3
def setup():
size(600, 400)
frameRate(60)
def draw():
global x, dx
background(220)
fill(255, 0, 0)
ellipse(x, y, 50, 50)
x += dx
if x > width - 25 or x < 25:
dx = -dx
Kako ovo radi?
- ekran se briše (
background()) - objekat se crta
- pozicija se menja
Animacija slike (sprite)
Sada umesto oblika koristimo sliku.
img = None
x = 0
y = 150
dx = 3
def setup():
global img
size(600, 400)
img = loadImage("lik.png")
def draw():
global x, dx
background(220)
image(img, x, y)
x += dx
if x > width - img.width or x < 0:
dx = -dx
img mora biti dostupan u draw() funkciji.
Ako ga definišeš samo u setup(), neće raditi.
Ovo NE radi:
def setup():
img = loadImage("lik.png")
Zato što img nije globalna promenljiva.
Koristi:
img.width
img.height
da dobiješ tačne dimenzije.
- Promeni brzinu (
dx) - Promeni početnu poziciju
- Koristi svoju sliku
Zašto koristimo global?
Promenljive definisane van funkcije moraju biti označene kao global da bi se menjale u draw().
global x, dx
global, promena vrednosti neće raditi kako očekuješ.
Brzina animacije — frameRate()
frameRate(60) znači 60 frame-ova u sekundi.
frameRate(10)— sporoframeRate(120)— brzo
Mini projekat: animirana scena
- slika lika
- pozadina
- dodatni objekti
Sledeća lekcija
Povezane teme
Proveri znanje
Otvori kviz
Mini kviz: animacija
1. Zašto pišemo global x u draw()?
2. Šta se desi ako u draw() izostaviš background()?
