Tehnici de animatie

Trimis la data: 2003-02-10 Materia: Informatica Nivel: Gimnaziu Pagini: 3 Nota: / 10 Downloads: 10
Autor: Danuty_simi Dimensiune: 8kb Voturi: Tipul fisierelor: doc Acorda si tu o nota acestui referat: 1 2 3 4 5 6 7 8 9 10
vezi mai multe detalii vezi mai putine detalii
Raporteaza o eroare
Ne propunem să răspundem la următoarea întrebare: cum facem o figură să se mişte pe ecran? Pentru rezolvarea acestei probleme există mai multe tehnici care vor fi prezentate în continuare, dar toate au acelaşi principiu de funcţionare şi anume:

- se desenează figura:
- se aşteaptă o perioadă de timp;
- se şterge figura şi se deplasează într-o altă poziţie.

Pentru ca figura să pară că se mişcă în mod real, un rol important îl are timpul de aşteptare (timpul în care figura rămâne pe ecran până a se şterge). Acesta se reglează de la caz la caz cu ajutorul procedurii Delay. În principal, există trei tehnici de realizare a animaţiei. Ele diferă prin procedurile pe care le utilizează şi prin viteza de execuţie. Pentru exemplificarea lor vom folosi o singură problemă şi anume de a mişca un pătrat pe orizontală.

Tehnica 1
Operaţiile de desenare şi ştergere a figurii se fac cu ajutorul procedurii SetWriteMode, pe care o vom prezenta în continuare.
Forma generală a acestei proceduri este SetWriteMode(valoare întreagă). Vom folosi această procedură cu un singur parametru şi anume XorPut (valoarea 1 predefinită în Unit-ul Graph). În concluzie, vom pune SetWriteMode(XorPut).

După apelul acestei proceduri procedăm astfel:
- apelăm o procedură care desenează o figură (aceasta va fi vizibilă pe ecran); ¬
- aşteptăm o perioadă de timp;
- apelăm din nou procedura care realizează desenul, exact in aceeaşi poziţie (la acest apel desenul va dispărea, pentru că, de fapt, desenul se realizează acum utilizând culoarea fondului);
- apelăm procedura care realizează desenul într-o altă poziţie (acesta va deveni vizibil, pentru că se realizează utilizând culoarea curentă);
- aşteptăm o perioadă de timp;
- procedeul se repetă până când figura a ajuns în poziţia dorită.

Tehnica 2
Această tehnică de animaţie este superioară primei tehnici, datorită faptului că este mai rapidă operaţia de aducere din memorie pe ecran a unei imagini, decât desenarea ei. Acest fapt constituie un mare avantaj în cazul imaginilor complexe.

Pentru a înţelege această tehnică, trebuie să prezentăm în prealabil câteva proceduri. Orice imagine care se află pe ecran poate fi salvată în memoria internă. Există posibilitatea ca anumite informaţii (cum ar fi cele care permit vizualizarea unei imagini) să fie salvate în memoria internă, alocând spaţiul necesar pentru aceasta în timpul execuţiei programului. O astfel de alocare a memoriei poartă numele de alocare dinamică şi se va studia în detaliu în clasa a zecea, dar pentru această tehnică de animaţie ne sunt necesare câteva cunoştinţe minimale.

Variabila de tip Pointer are posibilitatea de a reţine o adresă în memorie (a nu se face confuzie între adresa unei zone de memorie şi conţinutul ei). Alocarea spaţiului în memorie (un număr de octeţi consecutivi la o anumită adresă) se face cu ajutorul procedurii GetMem care creează în heap o variabilă dinamică de dimensiune specificată.

Sintaxă: Procedure GetMem (Var p : Pointer, dim : Word);
P – variabilă de tip pointer care va conţine adresa de început a zonei alocate variabilei dinamice
Dim – este o expresie care stabileşte lungimea în octeţi a zonei care va fi ocupată în heap.

Valorea sa maximă este 65521.
Cum salvăm imaginea? De fapt, se salvează imaginea conţinută într-un dreptunghi pentru care se cunosc coordonatele colţurilor din stânga sus şi dreapta jos: De unde ştim câţi octeţi sunt necesari pentru a salva o imagine? Aici, ne este de mare folos funcţia ImageSize. Această funcţie este de tip Word şi returnează numărul de octeţi necesari pentru salvarea unei imagini în cazul când dispunem de acest spaţiu, în caz contrar se returnează valoarea 0.

Până acum ştim cum putem afla numărul de octeţi necesari memorării imaginii, cum să rezervăm spaţiul necesar memorării imaginii, dar nu ştim cum salvăm efectiv imaginea (octeţii corespunzători ei aflaţi în memoria video). Pentru a putea realiza aceasta, folosim procedura GetImage are forma următoare: GetImage (x1,y1,x2,y2,a^).

Parametrii au următoarea semnificaţie:
- x1,y1,x2,y2 - coordonatele colţului din stânga sus şi dreapta jos ale dreptunghiului care conţine imaginea;
- a^ - spaţiul în care se face salvarea. Referitor la ultimul parametru, facem următoarele precizări:
- a este variabilă de tip Pointer
- când scriem a, ne referim la adresa unde s-a făcut rezervarea);
- când scriem a^ ne referim la conţinutul de la adresa care se găseşte în variabila a.

În concluzie, procedura GetImage are rolul de a salva o imagine în memorie. Operaţia inversă, da a reface imaginea prin aducerea octeţilor de informaţie în memoria video, se face prin utilizarea procedurii PutImage. Aceasta are forma generală: PutImage(x1,y1,a^,XorPut).

  • pag. 1
  • pag. 2
  • pag. 3

Nota explicativa
Referatele si lucrarile oferite de Referate.ro au scop educativ si orientativ pentru cercetare academica.

Iti recomandam ca referatele pe care le downloadezi de pe site sa le utilizezi doar ca sursa de inspiratie sau ca resurse educationale pentru conceperea unui referat nou, propriu si original.

Referat.ro te invata cum sa faci o lucrare de nota 10!
Filmele zilei
Linkuri utile
Programeaza-te online la salonul favorit Descarca gratuit aplicatiile pentru iOS si Android Filmulete haioase Filme, poante si cele mai tari faze Jocuri Cele mai tari jocuri de pe net Referate scoala Resurse, lucrari, referate materiale pentru lucrari de nota 10 Bacalaureat 2019 Vezi subiectele examenului de Bacalaureat din 2019 Evaluare Nationala 2019 Ultimele informatii despre evaluare nationala
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.
Confidentialitatea ta este importanta pentru noi

Referat.ro utilizeaza fisiere de tip cookie pentru a personaliza si imbunatati experienta ta pe Website-ul nostru. Te informam ca ne-am actualizat politica de confidentialitate pentru a integra cele mai recente modificari privind protectia persoanelor fizice in ceea ce priveste prelucrarea datelor cu caracter personal. Inainte de a continua navigarea pe Website-ul nostru te rugam sa aloci timpul necesar pentru a citi si intelege continutul Politicii de Cookie. Prin continuarea navigarii pe Website-ul nostru confirmi acceptarea utilizarii fisierelor de tip cookie conform Politicii de Cookie. Nu uita totusi ca poti modifica in orice moment setarile acestor fisiere cookie urmarind instructiunile din Politica de Cookie.


Politica de Cookie
Am inteles