Crearea de jocuri flash

Deși trebuie să vă străduiți întotdeauna să vă asigurați că dimensiunea fișierului finit este minimă, probabil că veți avea videoclipuri care vor dura mai mult de câteva secunde pentru a lucra cu modemul. Dacă jocul are o mărime de sute de kilobyte, unii utilizatori pot lua câteva minute să-l descarce.
Pentru astfel de anunțuri mari, dezvoltatorii generează de obicei ecrane de încărcare în Flash sau Shockwave. În mod obișnuit, ecranul de pornire este primul cadru sau senen al clipului, deci acesta este primul dat care va trece prin modemul utilizatorului. Apoi "Încărcare joc" apare pe ecran, astfel încât utilizatorii să știe ce se întâmplă.
În timpul descărcării videoclipului, puteți furniza mai multe informații utilizatorului. Utilizând limba ActionScript, puteți să arătați care parte a filmului a fost deja încărcată sau ce parte trebuie descărcată.

Crearea unei bare de boot

În Fig. 17.3 arată primul cadru al încărcătorului de rolă1.fla. Acest cadru va apărea înaintea utilizatorului după descărcarea mai multor kilobyte din film. Apoi, folosind o linie din centrul ecranului, utilizatorul va vedea cum se desfasoara procesul de download.

Figura 17.3 O bară care arată evoluția câmpului de descărcare și a câmpului text îi spune utilizatorului cum se descarcă video


Codul pentru acest lucru este destul de simplu. Folosind funcția getBytesTotal (), puteți stabili care este mărimea clipului. Dacă introduceți prefixul _root înainte de funcția getBytes Total (), aceasta va determina dimensiunea totală a videoclipului. Pentru a determina câte kilobyte sunt deja încărcate, trebuie să utilizați funcția getBytesLoaded ().
În clipul Loaderl.fla din câmpul de lucru este o instanță a clipului, care este un dreptunghi simplu. Se numește "Progress Bar Fill". Această instanță a fost creată astfel încât centrul clipului să fie situat în colțul din stânga sus al dreptunghiului. În mod similar, indicatorul rezervelor de combustibil a fost creat în jocul "Lunokhod" (vezi capitolul 16). Deoarece centrul video este situat în colțul din stânga sus al dreptunghiului, proprietatea _xscale poate fi atribuită orice valoare de la 0 la 100, lățimea clipului va fi schimbat, că este, el va umple zona din dreapta a centrului.
Pentru a copia clipul, atașați un mic script care utilizează getBytesLoaded () Timeline principal, pentru a afla cât de multe bytes au fost deja descărcate, și în conformitate cu prezenta schimba forma unui dreptunghi. Când întregul film este încărcat, cronologia va merge la cadrul "complet" (vezi Figura 17.4). În acest cadru, apare un mesaj care indică finalizarea descărcării. Pentru a porni jocul, utilizatorul trebuie să facă clic pe butonul situat în acest cadru. Un astfel de buton este un element de clip foarte util, deoarece în timpul unei descărcări lungi utilizatorul nu poate privi monitorul și nu doriți să îl ignorați începutul animației.

Figura 17.4 În cadrul "complet", filmul așteaptă până când playerul face clic pe buton și numai atunci animația continuă să fie redată

onClipEvent (încărcare) // Determinați dimensiunea fișierului.
totalFileSize = _root.getBytesTotal ();
// Ascunde bara de încărcare.
this._xscale = 0;
>
onClipEvent (enterFrame) // Aflați câți octeți sunt deja încărcați.
bytesLoaded = _root.getBytesLoaded ();
// Convertiți această valoare la o valoare de la 0 la 1.
amountLoaded = bytesLoaded / totalFileSize;
// Convertiți valoarea la 0 la 100.
percentLoaded = int (100 * suma Loaded);
// Determinați scara barei de încărcare.
this._xscale = procentLoaded;
// Setați câmpul de text din linia temporală principală.
_root.loadingMessage = %Loaded + "%";
// Verificați dacă totul este deja încărcat,
dacă (amountLoaded> = 1.0) _root.gotoAndStopt "complete");
>>

Ecrane sofisticate de încărcare

În Fig. 17.3 arată că câmpul de text afișează o valoare de 63%. În locul acestei metode de măsurare, puteți să îi spuneți utilizatorului numărul de octeți deja încărcați și care este dimensiunea întregului videoclip. Pentru aceasta, modificați valoarea de încărcare. după ce au scris următoarele:

_root.loadingmessage = int (bytesLoaded / 1000) + "kb /" + int (totalFileSize / 1000) + "kb";

Apoi, în loc de 63% veți vedea 90 Kb / 143 Kb, pe care eu personal le plac mai mult.
Efectuând calcule matematice simple, puteți informa utilizatorul cât de rapid este descărcarea. Pentru aceasta, creați variabile care stochează numărul de octeți încărcați și timpul necesar încărcării acestora. Acum poți determina viteza de descărcare împărțind prima valoare cu cea de-a doua. Acest lucru vă va permite să anticipați cât timp va dura descărcarea întregului videoclip.
Următorul cod este reprezentat în clipul Loader2.fla. Este similar cu fragmentul de cod anterior, numai aici puteți vedea informații suplimentare pe ecran: viteza de descărcare și timpul rămas.

onClipEvent (încărcare) // Obțineți informațiile inițiale.
totalFileSize = _root.getBytesTotal ();
startTime = getTimer О;
startBytes = _root.getBytesLoadedf);
// Ascunde bara de încărcare,
acest lucru. _xscale = 0;>
onClipEvent (enterFrame) // Aflați câți octeți sunt deja încărcați.
bytesLoaded = _root.getBytesLoaded ();
// Convertiți această valoare la o valoare de la 0 la 1.
amountLoaded = bytesLoaded / totalFileSize;
// Convertiți valoarea la 0 la 100.
percentLoaded = int (100 * suma Loaded);
// Determinați scara barei de încărcare.
this._xscale = procentLoaded;
// Determinați viteza de descărcare.
timeSoFar = getTimerO - startTime;
viteza = bytesLoaded / timeSoFar;
// Aflați cât timp a mai rămas până la sfârșitul descărcării.
bytesLeft = totalFileSize - bytesLoaded; timeLeft = (bytesLeft / viteză) / 1000;
// 'Convertiți valoarea rezultată
// în valoare cu o singură cifră după virgulă.
viteza = int (10 * viteza) / 10;
// Stabiliți câmpurile de text.
_root.bytesMessage = int (bytesLoaded / 1000) + "kb /" + int (totalFileSize / 1000) + "kb";
_root.speedMessage = viteza + "k / sec";
_root.timeMessage = int (timeLeft) + "secunde rămase";

Deoarece am rotunjit valoarea timeLeft la un număr întreg, zero va apărea în fereastra corespunzătoare în timpul ultimei secunde a sarcinii. Dacă nu sunteți mulțumit de această stare de lucruri, atunci puteți roti această valoare în una sau mai multe zecimale.

// Verificați dacă totul este deja încărcat.
dacă (amountLoaded> = 1.0) _root.gotoAndStop ("complete");
>>

Alte tipuri de ecrane de încărcare

Ecranele de descărcare discutate mai jos sunt standard. În plus, există multe alte opțiuni. Cea mai ușoară: puteți afișa numai un cadru static cu inscripția "Încărcare, așteptați." (Încărcare, vă rugăm să așteptați.). După terminarea descărcării, videoclipul va merge pur și simplu la următorul cadru.
Această opțiune poate fi complicată și poate pune orice animație repetată în cadru.
Varianta și mai complexă: fiecare cadru va afișa diferite etape de încărcare. De exemplu, o anumită imagine va fi colectată: cu cât este mai aproape de descărcare, cu atât imaginea devine mai completă.
Probabil nu trebuie să obțineți getBytesTotal () și getBytesLoaded () pentru a crea astfel de ecrane de încărcare. În schimb, puteți utiliza funcția ifFrameLoaded () pentru a vedea dacă toate obiectele grafice dintr-un anumit cadru sunt încărcate. Această funcție este utilă dacă doriți ca utilizatorul să înceapă o parte din joc, dar nu poate continua până când cadrele necesare sunt gata.
Dar este mai bine ca timpul de boot să fie util pentru jucător. De exemplu, puneți un ghid în joc în cadru. În loc să stați și să urmăriți modul în care bara de descărcare este completă, jucătorul va putea găsi informații utile și necesare pentru el.

Articole similare