Îndrumări de programare interesante pentru designer - Pune-ți fotografia în funcțiune (prima parte): 16 pași
Îndrumări de programare interesante pentru designer - Pune-ți fotografia în funcțiune (prima parte): 16 pași

Video: Îndrumări de programare interesante pentru designer - Pune-ți fotografia în funcțiune (prima parte): 16 pași

Video: Îndrumări de programare interesante pentru designer - Pune-ți fotografia în funcțiune (prima parte): 16 pași
Video: Cum pregatim un proiect de Smart Home cu #Loxone Episodul 1 2025, Ianuarie
Anonim

Alerga! Alerga! Alerga!

Programarea nu este atât de dificilă. Punctul cheie este să-ți găsești ritmul și să-l faci unul câte unul.

Înainte de a citi acest capitol, sper că v-ați familiarizat deja cu metoda de desenare a funcției de bază sau vă veți simți amețit și confuz de două funcții mari ale capului: configurare și desen.

Din moment ce dorim să realizăm grafică motională, trebuie să știm cum este produsă animația.

Imaginea de mai sus pare destul de atractivă și dezvăluie vizual principiul de implementare al animației.

Animația este magie. Este o magie a trișării vizuale. Cu toate acestea, în aceste informații au explodat, epoca inundațiilor video, am fost deja obișnuiți cu acestea. Puțini oameni vor fi surprinși că este un lucru uimitor să poți vedea animația.

Același principiu poate fi aplicat în animația de desen cu programul. Trebuie să luăm în considerare cum să desenăm diferite grafice în fiecare cadru, iar programul va întoarce automat paginile în timp ce completăm o animație completă în capul nostru. În capitolul următor, vom vorbi despre cum să realizăm mișcarea grafică de bază. Înainte de aceasta, trebuie să cunoaștem câteva cunoștințe de bază despre variabile.

Pasul 1: Variabilă

Variabila este containerul pentru date. Poate fi folosit în mod repetat în cadrul unui program.

De exemplu:

[cceN_cpp theme = "dawn"] dimensiune (500, 500); elipsă (100, 250, 50, 50); elipsa (200, 250, 50, 50); elipsa (300, 250, 50, 50); elipsă (400, 250, 50, 50);

[/cceN_cpp]

Această secțiune de cod nu a folosit nicio variabilă. Desenează patru cercuri pe ecran. Putem găsi că au aceeași lățime și înălțime. Acum că este același lucru, pentru a minimiza introducerea repetată a datelor, putem defini un semn care să îl reprezinte. Acest semn este variabil.

Iată codul după adăugarea unei variabile:

[cceN_cpp theme = "dawn"] dimensiune (500, 500); int a = 50; elipsă (100, 250, a, a); elipsă (200, 250, a, a); elipsă (300, 250, a, a); elipsă (400, 250, a, a);

[/cceN_cpp]

Obținem același rezultat!

Deoarece am definit variabila a, putem modifica în mod convenabil parametrii. Dacă schimbăm a = 50 în a = 100, atunci toate lățimea și înălțimea cercurilor vor deveni 100 în mod uniform. Deci nu trebuie să schimbăm parametrii unul câte unul. Variabila este cu adevărat o invenție bună.

Pasul 2: crearea variabilei

Înainte de a utiliza variabila, trebuie să facem o declarație și să-i desemnăm tipul de date.

int i;

i = 50;

Prima teză de cod a făcut o declarație pentru o variabilă i. int este un simbol utilizat în principal pentru a declara variabilă. Atunci când declară, va economisi o cameră în memoria calculatorului, care este echivalentă cu generarea unei „cutii”, special utilizată pentru a restabili datele întregi. A doua propoziție înseamnă că atribuirea 50 să fie implementată de variabila i. După implementarea acestei propoziții, datele vor fi stocate în variabila i stabil. Sau puteți fi mai leneș să combinați cele două propoziții de mai sus într-o singură sarcină și să completați în timp ce faceți declarație.

int i = 50;

Este relativ liber să numiți o variabilă. Dar uneori trebuie să fim atenți la ceva.

Pasul 3: Reglementarea numirii variabilei

• Trebuie să fie combinația dintre alfabet și subliniat. Poate fi un simbol sau un cuvânt.

• Caz sensibil. Numele și numele pot reprezenta diferite variabile.

• Încercați să-l numiți cât mai ușor posibil pentru a vă permite să înțelegeți la o vedere. Caracterul inițial trebuie să fie un alfabet în loc de un număr sau un caracter special.

• Nu există cuvinte cheie precum int, float

Următoarele sunt câteva afirmații greșite.

int $ a;

int 89b;

Iată afirmațiile corecte:

int r;

int super_24;

int openTheDoor;

Pasul 4: Tip variabil

Cu excepția declarării datelor întregi, putem declara pentru datele zecimale (numite și date cu virgulă mobilă) cu cuvântul cheie float.

plutitor b = 0,5

Trebuie să avem în vedere ce tip de date am folosit pentru declarația noastră. Dacă am folosit cuvântul cheie int, această din urmă atribuire nu poate scrie i = 0,5 sau ceva de genul acesta, sau programul va deveni eroare. Dar dacă scriem opus, este în regulă. De exemplu, float i = 5 este gramatica potrivită, dar programul o va recunoaște ca număr zecimal.

Unele dintre variabile au fost deja definite de sistem. Nu trebuie să le declarăm singuri. La fel ca „lățimea, înălțimea” menționată anterior, va dobândi automat lățimea și înălțimea ecranului computerului. Frecvența de utilizare atât de ridicată încât proiectantul o definește direct ca fiind o variabilă implicită pentru a ne face mai convenabilă utilizarea.

Pasul 5: Operator

Următorii sunt operatori de prelucrare:

+ plus

- minus

* înmulțiți

divide

% Modul de rest

Trebuie să fiți familiarizați cu toți acești operatori, cu excepția%. Pare destul de ciudat, deoarece rezultatul său este restul. 9% 3 este 0. În timp ce 9% 5 este 4.

Operatorii pot fi folosiți între sarcini și variabile.

[cceN_cpp theme = "dawn"] int a = 1; // declarați întreaga variabilă a, atribuirea este 1. int b = 2; // Declarați variabila întreagă b, atribuirea este 2. int c; // Declarați variabila întreagă c. c = a + b; // Plus două atribuire și atribuiți rezultatul lui c. print (c); // Variabila de ieșire c.

[/cceN_cpp]

Pasul 6: Rezultatul operației:

Rezultatul de ieșire nu va fi afișat pe fereastră, ci în consola din partea de jos.

Metoda de scriere a celui de-al patrulea rând pare destul de ciudată. Dar este un format obișnuit utilizat frecvent în timpul alocării computerului. Partea stângă a simbolului egal ar trebui să fie variabila finală atribuită, în timp ce partea dreaptă ar trebui să fie procesul de operare.

Funcția de imprimare din a cincea linie poate imprima variabile în consolă, care este adesea utilizată pentru a testa starea ieșirii datelor.

Pasul 7: Regulamentul de funcționare

Un punct dificil în procesare este că trebuie să clarificăm tipul variabilei. Trebuie să acordăm o atenție specială procesului numărului cu virgulă mobilă și tipului întregului.

print (6/5); // rezultatul 1

Operațiunea între numere întregi va avea un număr întreg nou. 6 împărțit la 5 este 1,2. Dar rezultatul de ieșire al programului este 1. Acest lucru este contrar intuiției noastre. Programul nu se va ocupa de rotund, ci șterge numărul din spatele punctului zecimal.

print (6.0 / 5.0); // rezultatul 1.2

Operațiunea între puncte flotante va avea ca rezultat un nou număr în virgulă mobilă. Dacă rezultatul real este 1.2, rezultatul de ieșire al programului va fi același.

print (6 / 5.0); // rezultatul 1.2

print (6,0 / 5); // rezultatul 1.2

În cele din urmă, este amestecul de număr întreg și număr cu virgulă mobilă. Rezultatul final va fi 1.2.

• De fapt, trebuie să aveți în vedere faptul că scopul acestui proiect de reglementare este de a nu pierde acuratețea datelor. Deci, dacă un element este un număr cu virgulă mobilă, rezultatul va fi și numărul cu virgulă mobilă.

Pasul 8: Funcția de configurare și funcția de desenare

Anterior am vorbit despre o mulțime de cunoștințe fundamentale. Acum, în sfârșit, venim să jucăm ceva interesant. Configurarea funcției și extragerea sunt echivalente cu funcțiile principale ale procesării. Aceste două funcții sunt foarte speciale. Poate controla procedura programului. Programul relativ complicat va include aceste două funcții, deoarece acestea sunt cadrul de bază al programului. Format:

configurare nulă () {

}

draw nul () {

}

Utilizarea specială face ca formatul lor de invocare să fie diferit de celelalte funcții. Trebuie să adăugăm „nul” înainte de numele funcției, care înseamnă „nicio valoare returnată”. În spatele numelui funcției, trebuie să adăugăm paranteze și paranteze.

[cceN_cpp theme = "dawn"] void setup () {print (1); } void draw () {print (2); } [/cceN_cpp]

Să aruncăm un exemplu:

Când apăsați butonul de funcționare, consola va afișa mai întâi „1” și apoi va scoate în mod constant „2” până când ați apăsat butonul de oprire sau ați închis fereastra.

Codul dintre paranteze în funcția de configurare va fi implementat o singură dată. În timp ce codul din funcția de extragere va rula constant în circulație (implementare implicită de 60 de ori / secundă).

Datorită acestui caracter, setarea este de obicei folosită pentru a inițializa proprietatea mediului, cum ar fi lățimea și înălțimea ecranului, culoarea de fundal și atribuirea tuturor tipurilor de variabile. Deși plasăm deseori funcțiile de desen în desenul funcțional pentru a genera grafică modificată continuu.

Pasul 9: Cerc în mișcare orizontală

Cu funcția draw, putem începe să ne creăm animațiile. Metoda de scriere a efectului de animație prin Procesare este destul de „incomodă”. Nu are nicio comandă existentă. De exemplu, desemnați o anumită formă pentru a face curbiliniar.

Trebuie să definim singuri aceste detalii. Trebuie să spuneți programului ce fel de grafică are nevoie cu siguranță de fiecare cadru.

Scrieți în el următorul cod (Acum să începem să-l facem cu mâinile):

[cceN_cpp theme = "dawn"] int x; int y; void setup () {dimensiune (300, 300); x = 0; y = înălțime / 2; } void draw () {fundal (234, 113, 107); noStroke (); elipsa (x, y, 50, 50); x = x + 1; }

[/cceN_cpp]

Această secțiune de cod afișează un cerc de mișcare. Fosta variabilă declarată x, y este utilizată pentru a stoca poziția coordonatei. Atribuțiile sale rulează în configurarea funcției. Codul cheii este următorul în cadrul desenului funcțional:

x = x + 1

Nu o priviți ca pe o ecuație matematică sau va fi foarte ciudat. Aici, „=” este un simbol pentru atribuire. Reprezintă plasarea numerelor potrivite în variabila din stânga. Să presupunem că x este 50, odată ce codul rulează, partea dreaptă a „=” este egală cu 50 + 1, adică 51. Rezultatul final va fi atribuit variabilei x. Deci valoarea lui x devine 51.

Urmați procedura programului, de fiecare dată când funcția de extragere funcționează o singură dată, valoarea lui x va crește 1. Deci, de fiecare dată când desenăm, cercul va deplasa o direcție de pixel orizontal spre dreapta, în comparație cu cadrul anterior. Prin urmare, grafica devine motională.

• Pentru a face codul să obțină o mai bună lizibilitate, trebuie să rezervăm o anumită cameră înainte de fiecare linie de cod din paranteze. Și va fi cât mai aliniat posibil. Apăsați TAB sau mai multe spații goale, se poate retrage.

• Simbolul spațiului gol și al întreruperii de linie din program nu va influența programul. Deci, este ok dacă tastăm una mai mult sau mai puțin.

Iată un alt mod mai simplu de a-l exprima. Pentru a face creșterea automată a cercului variabil 1, trebuie să-l scriem pentru a avea următorul format.

cerc = cerc +1

Destul de incomod! Dacă numele variabilei este mai lung, atunci trebuie să tastăm mai multe cuvinte. Așadar, predecesorii noștri leneși gândesc o idee ca aceasta.

cerc ++

Nu este foarte simplu? Înseamnă creșterea automată a 1. Similar cu acesta, există - -, ceea ce înseamnă scăderea automată a 1.

Dar dacă sperăm că cantitatea de creștere automată este un alt număr ca 2, trebuie să încercăm o altă expresie.

cerc + = 2

Acest lucru este egal cu

cerc = cerc + 2

În mod similar, există - =, / =, * =.

Pasul 10: direcția de mișcare

Ce direcție se deplasează graficul depinde de modul în care vă schimbați coordonatele. Dacă este schimbat în y = y + 1, cercul se va deplasa în jos. Dacă ambelex și y cresc 1, cercul se va deplasa în jos, în partea dreaptă jos. Dacă îl scriem pentru a fi un simbol minus, se va mișca în direcția opusă.

[cceN_cpp theme = "dawn"] int x, y; // Poate declara mai multe variabile în același timp, utilizați virgula pentru a separa. void setup () {dimensiune (300, 300); x = 0; y = 0; } void draw () {fundal (234, 113, 107); noStroke (); elipsa (x, y, 50, 50); x ++; y ++; }

[/cceN_cpp]

Rata de mișcare

Îți amintești cele 60 de cadre implicite pe secundă din tragerea funcției? Conform acestei rate, cercul de mai sus se va deplasa cu 60 de pixeli pe secundă spre dreapta.

Dacă vrem să schimbăm rata de mișcare grafică, există două metode: una este să creștem valoarea x de fiecare dată de când va fi modificată.

x = x + 10

A îmbunătățit viteza de 10 ori comparativ cu cea originală!

Cealaltă metodă este schimbarea frecvenței de reîmprospătare a pânzei. frameRate ()

Această funcție poate modifica frecvența de difuzare a pânzei. Scrieți frameRate (10) în configurarea funcției, va schimba originalul de 60 de cadre pe secundă în 10 cadre pe secundă. Viteza este încetinită de 6 ori mai mult decât înainte.

Pasul 11: fundal trecut cu vederea

Toate exemplele anterioare scriu fundalul în desenul funcțional. V-ați gândit vreodată să îl scrieți în configurarea funcției? Va avea vreo diferență? Acum, să actualizăm exemplul mișcării orizontale.

[cceN_cpp theme = "dawn"] int x, y; void setup () {dimensiune (300, 300); fundal (234, 113, 107); x = 0; y = înălțime / 2; } void draw () {noStroke (); elipsa (x, y, 50, 50); x + = 1; } [/cceN_cpp]

Ce s-a întâmplat? Poate că nu poate înțelege motivul producerii problemei în mod corespunzător. Ștergeți funcția noStroke, adăugați din nou lovitura și vedeți calea de mișcare a cercului.

O, deoarece cercul creat anterior nu a fost șters! Deoarece configurarea funcției funcționează o singură dată, dacă scriem fundalul deasupra acestuia, acesta va umple fundalul pentru o singură dată și nu va mai avea niciun efect. Fundalul funcției este ca un instrument de găleți de vopsea. Odată utilizat, acesta va acoperi tot conținutul din pânză în loc să seteze doar o culoare de fundal. Îl scriem înainte de desenarea funcției, astfel încât fostul cadru să fie acoperit de fiecare dată când creăm un nou model. Prin urmare, cercul poate rula așa cum ne-am așteptat. Cu excepția amintirii utilizărilor fiecărei funcții, trebuie să ne gândim la poziția codului. O mulțime de timp, în sus sau în jos o linie pentru codea și pentru a o scrie în interiorul sau în afara unui acolad, va crea efecte destul de diferite. Direcția codului este bidimensională. Dacă apare o eroare, trebuie să calibrăm în această două dimensiuni.

• Această metodă de desenare repetată poate crea un efect foarte special dacă este utilizată corect. Puteți copia următorul cod și puteți încerca.

[cceN_cpp theme = "dawn"] void setup () {dimensiune (400, 400); } void draw () {elipsă (lățime / 2-mouseX, înălțime / 2-mouseX, mouseY, mouseY); elipsă (lățime / 2-mouseX, înălțime / 2 + mouseX, mouseY, mouseY); elipsă (lățime / 2 + mouseX, înălțime / 2-mouseX, mouseY, mouseY); elipsă (lățime / 2 + mouseX, înălțime / 2 + mouseX, mouseY, mouseY); } [/cceN_cpp]

Aici am folosit variabila magică mouseX și mouseY. Mai târziu vom vorbi despre asta în detaliu.

Pasul 12: Cercul de agitare

Ce se întâmplă dacă vreau să fac direcția mișcării cercului să devină neregulată? Cu funcția aleatorie inteligent, puteți realiza și acest efect. Aleatoria este o funcție frecvent utilizată. Poate fi folosit pentru a genera funcții aleatorii. Este ca un spirit fără pistă. Odată legat de variabile, nu vă puteți imagina ce va deveni în continuare.

Invocați formatul:

aleatoriu (ridicat)

Înalt reprezintă limita superioară aleatorie, iar limita inferioară implicită este 0. De exemplu, aleatoare (10). Va produce un număr de la 0 la 10 aleatoriu (0 este inclus, dar 10 nu este inclus).

aleatoriu (scăzut, ridicat)

Dacă setăm doi parametri, atunci acesta va reveni la valoarea aleatorie dintre ei. De exemplu, random (5, 10). Se va produce un număr de la 5 la 10 aleatoriu (5 este inclus, dar 10 nu este inclus).

Exemplu:

[cceN_cpp theme = "dawn"] float x;

x = aleatoriu (50, 100);

print (x); [/cceN_cpp]

De fiecare dată când rulăm programul, consola va afișa valori diferite.

• Notă: valorile create de funcția aleatorie aparțin tipului cu virgulă mobilă (tip de număr zecimal). Dacă dorim să atribuim o valoare variabilei întregi, trebuie să o transformăm prin funcția int (). Transformarea nu respectă rotunjirea, ci șterge direct partea zecimală. Astfel, ieșirea int (aleatorie (5)), are doar 5 posibilități: 0, 1, 2, 3, 4.

După ce ne-am familiarizat cu utilizarea funcției aleatorii, putem intra direct în cazul de mai jos.

[cceN_cpp theme = "dawn"] int x, y; void setup () {dimensiune (300, 300); x = lățime / 2; y = înălțime / 2; } void draw () {fundal (234, 113, 107); noStroke (); x + = int (aleatoriu (-5, 5)); y + = int (aleatoriu (-5, 5)); elipsa (x, y, 50, 50); }

[/cceN_cpp]

Fostele valori ale coordonatelor adăugate sunt fixe. Doar dacă creștem o valoare aleatorie, cercul se va deplasa într-o direcție nedeterminată. Cu o gamă aleatorie mai mare, se agită mai frecvent. Deoarece schimbarea valorii între cadre este respinsă, mișcarea nu va mai fi lină. În timp ce primul cadru este la (150, 150), cel din urmă cadru se va deplasa în poziția de (170, 170) într-o privire.

Pasul 13: Migrarea cercului

Cercul migrator

Va crea mișcare lină? Zgomotul funcțional ne poate ajuta. Are un ritm mai bun decât aleatorii standard. Și numerele aleatorii generate aleatoriu sunt continuu.

Invocați formatul:

zgomot (t)

Zgomotul funcțional nu poate defini domeniul său de ieșire. Programul îl definește poate genera numai numere în virgulă mobilă de la 0 la 1 și intrarea fixă poate avea doar ieșire fixă.

[cceN_cpp theme = "dawn"] float x = noise (5); plutitor y = zgomot (5); print (x, y); [/cceN_cpp]

Deoarece parametrii de intrare de mai sus sunt 5, rezultatele rezultatelor sunt aceleași. Atunci cum să schimbi rezultatul? Răspunsul este să modificați parametrii de intrare dinamic. De fapt, putem considera zgomotul ca o pistă de voce nelimitată, parametrii de intrare sunt exact ca „timpul prezent”. Dacă parametrul de intrare este continuu, și ieșirea va fi continuă.

[cceN_cpp theme = "dawn"] float x, y; void setup () {dimensiune (700, 100); x = 0; fundal (0); } nul nul () {x + = 1; y = zgomot (frameCount / 100.0) * 100; noStroke (); elipsa (x, y, 2, 2); }

[/cceN_cpp]

În acest caz, trasăm calea de schimbare a lui Y astfel încât să putem înțelege mai bine zgomotul funcțional.

• Printre acestea, frameCount variabil va obține cadrul actual. Diferit de lățime, înălțime în precedent, este stabil, fără nicio modificare. În plus, începe să crească de la 0. Dacă îl înțelegem prin afișarea grafică animată inițială, arată pagina la care ne-am orientat (mai degrabă la concepția timpului din program).

• frameCount este variabilă întreagă. Împărțit cu o altă variabilă întreagă, programul va prelucra implicit rezultatul pentru a fi un număr întreg. Pentru a îmbunătăți precizia rezultatului, trebuie să schimbăm 100 la 100.0. Împărțit la un număr în virgulă mobilă, vom obține și un număr în virgulă mobilă.

• Pentru a schimba axa Y de la 0 la 100, trebuie să înmulțim rezultatul zgomotului cu 100. Astfel putem controla intervalul de valori aleatorii.

Unii dintre voi buni la gândire s-ar putea întreba „de ce trebuie să împărțim frameCountby 100? Nu este bine să scriem frameCount direct?” Sigur ca poti! Dar aici, pentru a afișa mai bine caracteristicile zgomotului funcțional, încetinim „rata de difuzare”. Exemplul de mai jos prezintă modificările valorii de ieșire la o rată de schimbare diferită.

[cceN_cpp theme = "dawn"] float x, y1, y2, y3, y4, y5; setare nulă () {dimensiune (700, 500); x = 0; fundal (0); } nul nul () {x + = 1; y1 = zgomot (frameCount) * 100; y2 = zgomot (frameCount / 10.0) * 100; y3 = zgomot (frameCount / 100.0) * 100; y4 = zgomot (frameCount / 1000.0) * 100; y5 = noise (frameCount / 10000.0) * 100; noStroke (); elipsa (x, y1, 2, 2); elipsa (x, y2 + 100, 2, 2); elipsa (x, y3 + 200, 2, 2); elipsa (x, y4 + 300, 2, 2); elipsă (x, y5 + 400, 2, 2); accident vascular cerebral (80); linie (0, 100, lățime, 100); linie (0, 200, lățime, 200); linie (0, 300, lățime, 300); linie (0, 400, lățime, 400); }

[/cceN_cpp]

Puteți privi modificarea parametrilor din zgomotul funcțional ca pe o bară de progres. Modificarea parametrului este ca și cum am muta bara de progres. Deci, atunci când sfera de schimbare a acestei „piese vocale” este mai mare, caracteristicile continue față și spate ale valorii de ieșire vor fi mai slabe. (Ne putem imagina ce se va întâmpla dacă difuzăm o piesă muzicală sau un videoclip cu viteza de 2 ori, 5 ori viteza, de 20 ori viteza). Când domeniul de aplicare este mai mare decât o anumită valoare, atunci nu are nicio diferență mare să funcționeze aleator la generarea valorii.

Dacă puteți înțelege toate exemplele de mai sus, atunci veți simți că nimic nu poate fi mai ușor să desenați un cerc de migrare. Puteți înțelege și principiile interne.

[cceN_cpp theme = "dawn"] float x, y; void setup () {dimensiune (300, 300); x = 0; } void draw () {fundal (234, 113, 107); x = zgomot (frameCount / 100,0 + 100) * 300; y = zgomot (frameCount / 100.0) * 300; noStroke (); elipsa (x, y, 50, 50); }

[/cceN_cpp]

Acum, mișcarea este mai interesantă la fel ca un giroscop rotativ.

• Motivul pentru care variabila x din zgomotul funcției trebuie să fie de plus 100 se datorează faptului că pentru a le separa pentru o distanță. Dacă parametrii lui xy din zgomotul funcției sunt identici sau destul de apropiați, schimbarea coordonatei x, y se va apropia de aceeași. Aceasta face ca mișcarea să devină mult mai aleatorie.

Pasul 14: Cerc mutat de mouse

Apoi, ajungem în cele din urmă la două variabile care îmi plac cel mai mult: mouseX și mouseY. La prima vedere a celor două concepții, ochii mei sclipesc de lumină. Pentru că este cel mai direct mod de a interacționa cu grafica. Cu el putem crea o mulțime de programe interesante.

Cazul este destul de simplu:

[cceN_cpp theme = "dawn"] int x, y; void setup () {dimensiune (300, 300); x = 0; y = 0; } void draw () {fundal (234, 113, 107); noStroke (); x = mouseX; y = mouseY; elipsa (x, y, 50, 50); }

[/cceN_cpp]

mouseX poate obține coordonata x a mouse-ului, în timp ce mouseY poate obține coordonata y.

• Să încercăm să schimbăm simbolul pozitiv și negativ sau să schimbăm mouseX și mouseY.

Pasul 15: Sfârșit

Din aceste comenzi familiare, ați putea fi capabil să efectuați mișcarea grafică. Cu conținutul ultimului capitol, folosiți-vă imaginația corect, puteți crea o mulțime de efecte animate interesante.

În următorul nostru capitol, putem vedea exemple mai abundente. În același timp, vom folosi funcții matematice și le vom combina cu mișcarea grafică.

Acest articol vine de la designerul Wenzy.

Pasul 16: Citiri relative:

Ghid de programare interesant pentru proiectant - Prelucrarea atingerii inițiale

Ghid de programare interesant pentru designer - Creați primul program de procesare

Acest articol provine de la:

Dacă aveți nevoie de ajutor, puteți contacta: [email protected].