cache MovieClip

cache MovieClip

Când am observat că jocul meu inhibă puternic versiunea de lansare cu o grafică am decis că într-un fel optimizat. cacheAsBitmap standard nu a ajutat. Săpat în forumuri și Google, am constatat că este mai bine să cache clipuri în Bitmap. Chiar găsit un depozit de TouchMyPixel sursă. Scary Fata de jocuri dezvoltatori. Dar el nu a fost prea versatil sdela artist de făcut pentru dimensiunea cadrului. Prin urmare, luând drept bază, am scris o clasă care transformă orice MovieClip pentru a seta Bitmap'ov luând în considerare toate offseturile. În viitor, această clasă poate fi folosit pentru a crea atlase de animație, care pot fi utilizate în portarea de jocuri Flash pentru alte platforme.


Rețineți că utilizarea unei metode statice getClip am creat o biblioteca de clipuri, în cazul în care le folosește apoi rame si compensari, nu pentru a produce copii.

Actualizare. Am corectat erorile, a adăugat etichete.

1. getRect trebuie să fie înlocuit cu getBounds. Pentru getBounds metoda returneaza un dreptunghi cu grosimea liniilor, estompare vystupayushego / Glow. Ca rezultat, în exemplul dumneavoastră, în multe cazuri, acestea vor fi tăiate de pe margini.
2. Dreptunghiul care este dat un non-întreg parametrii generali în aceste metode. Asta este, din nou, pentru a nu ajunge pe marginile - folosiți Math.ceil pentru lățime / înălțime și Math.floor pentru x și y.
3. Matricea De altfel recrea fiecare ciclu de buclă nu este necesară, nu chinui colector garbadzh, și într-adevăr, această abordare sumarno întregul cod se va salva de performanță.

Da, ei au un caz. Dar nimic bun nu poate vedea. Un exemplu viu numărul unu - am o animație a exploziei. Este de înțeles că la început el tiddly, apoi se extinde. Cu abordarea corectă economisește memorie, este foarte puternic. Exemplul numărul doi - Butterfly, vedere de sus, fluturand aripile sale. Exemplul numărul trei - mingea cade la pământ și sare de trei ori. Atunci când se apropie de un e_bounds fi o grămadă de jumătate gol bitmap pentru razmerchik va trebui să facă o mare pentru a se potrivi într-un colț de o minge în faza superioară și în celălalt colț - în partea de jos. Este teoretic posibil pentru a elimina clipul este mutat, să pună în aplicare programul său, dar în jocuri pline de astfel de momente, care sunt în mod convenabil sincroniza animator și trage în același timp.

Această abordare economisește memorie valoroasă.

Prin trecerea de accelerare și de a conserva memoria, avantajul principal al codului meu pe care o putem face un clip cu centrul la (0, 0), să-l cache și rotiți. Și totul va fi bine.

identitate, a scris o piesă similară. cod doar mai gros. Sincer, nu înțeleg de ce scormoni în altă dată bitmap (bine, și că este necesar să se definească zona de desen? Cu excepția zonei ar putea avea nevoie în continuare să fie biboks sau un fel de formă pentru fizica EAI personal nu mă deranjează să arunce într-un clip draw_frame dreptunghi transparent). dacă am Sui totul într-o singură dată bitmap (sau câteva, dar se înțelege spraytschit exact), ca si cum sunt cadrele în memoria strânsă și de a lucra pe desen ar trebui să fie mai rapid și mai inteligent, dar este greu de caz pentru o culoare. Din nou, dacă facem acest lucru (dacă funcționează cu adevărat), va trebui să sortați obiecte pentru a face sortarea resurselor utilizate - și apoi trage. cel puțin pentru ceea ce unii dintre particule la ea este elementar. Repet am nici o idee dacă acest lucru este adevărat pentru o culoare. chiar dacă o astfel de cache vom pierde principalul avantaj al unui clip video - lucra cu clipuri video imbricate (cum ar fi concediu de infarct miocardic la un astfel de cadru). și anume Trebuie să fie obiectele deja în cod.

încă nu înțeleg de ce duplicat sursa, dacă puteți utiliza programul de completare din acea clasă și vor fi angajate în animație și randare bont folosind un link dintr-o singură instanță a unei date bitmap de resurse / tona de cadre și alte date. IMHO este necesar să se împartă conceptul. discuție pe acest subiect este binevenit.

Vă rugăm să spuneți, de asemenea, modul în care ați implementat tranziția eticheta animația dorită? cum ar fi gotoAndPlay (eticheta: String) ca lucreaza pentru tine? Aș fi foarte recunoscător pentru Vechiul. Am ales o metodă destul de brutală - etichete este prost și uint pentru tranziția uint apare pe numărul etichetei și nu după nume. Acest lucru nu este în mod clar, și atunci când nu este în mod clar o durere de cap.

Multumesc pentru post. Când scrieți dvs. compilator special open source nu a fost, a avut multe de puzzle)) Ei bine, da, sunt de acord, este posibil să se facă o grafică automată exportator (rezalka spraytschitov) (unde altundeva în png), dar trebuie să ne gândim la salvarea datelor despre animație / cadre.

Despre bitmap-uri. În cazul meu, o mulțime betmapov nevoie doar pentru a salva de memorie, cum ar fi animația de explozie atunci când obiectul din punctul de a se transforma într-o minge mare de fum. Atunci când se utilizează un dreptunghi transparent, în primul cadru, vom avea o mulțime de pixeli inutile.

Despre clipuri built-in. Ele pot fi sacrificați în cazul în care prețul - o accelerare semnificativă a ecarisaj. Sau pur și simplu nu cache aceste obiecte, în cazul în care nu o mulțime (și de obicei este).

Despre duplicarea. Este făcută doar pentru că, astfel încât să nu producă aceleași date. Dacă avem 10 obiecte identice, ele vor folosi un singur set de cadre. Dar ele sunt animate în mod independent.

Despre etichete. Mergând prin numele etichetelor nu sunt delela și, în general, nu au nici o idee despre ceea ce este necesar pentru ea. Atunci când se lucrează cu animație, eu încă mai folosesc numerele de cadru. Dar pentru a face acest lucru este destul de simplu. Sau scris în numărul cadrului obiect pe un nume-cheie cadru sau du-te printr-o serie de etichete - indici de matrice sunt aceleași.

Pro transformă. Chinta bitmap atrage foarte repede, dar. În cazul nostru, este necesară doar o singură dată. Apoi a adăugat la Bitmap și Sprite răsuciți o avem prin mijloace obișnuite.
Despre joc. Da, el a scris totul pentru o anumită sarcină - pentru a accelera jocul. Numerele specifice nu știu. Dar, în jocul ochii ori 3. Toți și toate, desigur, nu este nevoie de cache accelerat. De exemplu, am personajele nu sunt memorate în cache, ele sunt greu de compus, dar nu mult. Interfața nu este, de asemenea, în cache. Numai blocuri, decorațiuni și obiecte.

Vă rog. Atlas se face în acest caz este simplu. Program - în PNG, datele din XML.

Multumesc pentru raspuns.

Despre dublaj rau am pus-o - Motor meu atrage totul într-o singură dată bitmap - ecran. Old School această abordare. Stsengraf blițul nu este utilizat în același timp, nu există nici un Bitmap nou (), etc. nu este necesar. Deci, pentru mine, este logic ca resursa in sine nu este duplicat în nici un fel. În cazul tău a fost necesar să Bitmap. Deoarece diferitele abordări și metode sunt diferite. Îmi place mai convenabil să aibă o clasă complet separate, care funcționează cu o singură instanță de resurse intră în HR și prin tragere-l pe același ecran. Ei bine, de fapt, în acest context, și am întrebat ce s-ar desena rapid vector simplu sau desena același vector, dar bitmap-uri stocate în memoria cache într-o dată?

Despre etichete este foarte simplu - dacă utilizați numerele de cadru nu este clar. Tu apoi a citit codul și trebuie să ne amintim în cazul în care acest lucru merge nafig gotoAndStop (182)? Puteți face constanta ANIM_RUN const: uint = 182; și a obține gotoAndStop (ANIM_RUN), care are mai clar, dar a fost mult mai convenabil de a folosi etichete pentru a evita crearea de cod inutile. Voi încerca să folosească obiectul pentru acest scop, cum ar fi să fie mai rapid și mai inteligent decât derulați prin lista de etichete prin compararea liniilor.

Despre Evacuați nu știu nimic, trebuie să citești. Ca un fel de măturător de stradă elimină tot pe faptul că nu există link-uri.
rame dreptunghiuri sunt în ei înșiși cadre, deoarece ne fiecare cadru este tras într-un bitmap separat. Ce dimensiune este doar același cadru.
La cheltuiala de etichete - nu le pasă. E destul de lucrurile mici, în afară nu duplicat.

Scavenger elimină datele bitmap. Dar, ca date bitmap - un obiect foarte mare, este recomandat pentru a le curăța le în cazul în care acestea nu mai sunt necesare. Și asta nu va începe până la următorul pasaj scavenger (care se va întâmpla atunci când, vorbind aproximativ, „Memory Empty“), ei vor atârna în memorie și ocupă mult spațiu.

Dar, în cazul în care datele bitmap este creat doar pentru durata de viață a unității flash (cache-ul, de exemplu), și a le elimina în mod clar nu au nevoie.

Ei bine, ceva se întâmplă în acest caz. Puteți, desigur, pentru paranoici de a face o funcție statică de curățare a cache, care va dispune toate. Mă gândesc la asta.

și cu o interfață de utilizare de fundal, în final, este necesar să se facă ceva. Înțeleg aici stilul este posibil, dar ... cu interes.

El a lansat. 50 MB de încărcare la pornire - încă prea mult pentru astfel de jocuri. Și orice eșec.

Adică, jocuri destul de onești noi? Și cum este clasat în locurile nu știu, din întâmplare?

speriat o concurență foarte puternică)

Oh, acest lucru este o veste mare, verificați seara cum funcționează.

Producții de cost (atât în ​​bani și ore de lucru), este posibil în prezent să ia în considerare.

Cineva a fost capabil să câștige o grămadă de AIR + Mac + Steam? După prelucrare, stimovsky fișierul joc.

Nu văd mari schimbări pentru dezvoltarea adecvată

Salutări! De aici, ne-am adunat, inclusiv vorbesc despre rake-ul :)

Vă mulțumesc să acorde o atenție. Rectificat.

Mult noroc! De asemenea, face jocul pe aer :)

Adobe cu siguranță nu scrie, dar a scris vinfon și încă o mulțime de lucruri. Și Shumway acum.

Oh spasibische! În cazul în care chiar și o singură persoană la site-ul util, nu mă refer la timp zadar petrecut pe ea!

Iar atunci când este închis? Istoric minunat! Plyusanul, noroc!

articole similare