Cum să utilizați o bibliotecă externă în proiectele Flash

Deci, ați citit despre o minunată bibliotecă Flash, un motor sau un API și doriți să o utilizați în propriul proiect. Îți descarci? dar este vorba fie de un fișier ciudat pe care nu îl știți cum să îl utilizați (un SWC), fie un milion de dosare de fișiere AS - nimic care spune "faceți dublu clic pentru a instala mine". Ce naiba?

O bibliotecă este doar o colecție de clase ActionScript care a fost proiectată astfel încât să nu fie legate de niciun proiect și să poată fi folosită în tot ce construiți. Aceste fișiere de clasă pot fi grupate într-un singur fișier SWC, care este ca un zip.

Voi folosi excelentul MinimalComps al lui Keith Peters ca exemplu, pentru că este disponibil atât în ​​format SWC cât și în folder. Același lucru se aplică tuturor bibliotecilor AS3, API-urilor și motoarelor; alte câteva exemple sunt Box2DFlash și Platforma Tweening Greensock.

Să începem să ne uităm la ce să facem dacă deschideți zipul și vă confruntați cu fișierele de clasă brute:


Un milion de dosare de fișiere AS

Fiecare fișier AS, cum știți, conține o clasă (bine, poate conține mai multe clase sau o interfață, dar lucrează împreună cu mine aici). Trebuie să aveți acces la aceste cursuri din proiectul dvs., dar, de asemenea, aveți nevoie de cursuri pentru a vă putea accesa reciproc, deoarece multe dintre ele vor moșteni aproape cu siguranță sau vor fi alcătuite din alte clase din bibliotecă. Acest lucru înseamnă că nu puteți să apucați doar câteva dintre clase, să le extrageți în dosarul proiectului și să vă așteptați să funcționeze.

Deschideți unul din fișiere și aruncați o privire la pachet declaraţie. De exemplu, în zipul minimalcomps, în fișier /src/com/bit101/components/Accordion.as, declarația pachetului este:

 pachet com.bit101.components

Vedeți cum aceasta corespunde structurii dosarelor? / Src /com / bit101 / componente/Accordion.as. (Și se numește clasa din fișier Acordeon.)

Nu este doar Keith Peters să fie curat și ordonat. Când introduceți o linie ca:

 import com.bit101.components.Accordion;

? Flash caută un fișier numit Accordion.as în structura folderului / com / bit101 / componente /. Pachetul trebuie să se potrivească cu structura folderului, astfel încât Flash să poată găsi fișierul; dacă v-ați mutat Accordion.as într-un alt dosar, cum ar fi / com / bit101 / diagrame /, și a încercat să facă:

 import com.bit101.charts.Accordion;

? ați primi un mesaj de eroare:

 5001: Numele pachetului "com.bit101.components" nu reflectă locația acestui fișier. Modificați numele definiției pachetului în acest fișier sau mutați fișierul.

Are sens. Deci, pachetul din clasă vă spune care folder este dosarul rădăcină al bibliotecii; este primul cuvânt înainte de primul punct din numele pachetului -- com în acest caz. Aceasta înseamnă că trebuie să mutați / Com / dosarul și toate subdosajele acestuia, la directorul principal al proiectului.


Care este directorul principal al codului?

Bacsis: Veți găsi deseori că este apelat dosarul rădăcină pentru bibliotecă / Com / sau /net/ sau / Org /, deoarece este o convenție comună de a utiliza numele dvs. de domeniu (în sens invers) ca structură de pachete. De exemplu, suntem http://active.tutsplus.com dacă am lansa o bibliotecă, pachetul ar începe com.tutsplus.active. Dacă toată lumea se lipește de propriile nume de domeniu, atunci nu vă faceți griji că nimeni nu creează accidental o bibliotecă cu aceleași nume de pachete ca bibliotecile altcuiva. Totuși, aceasta nu este o convenție universală; nici Box2D, nici bibliotecile Greensock nu o folosesc.

Directorul principal al codului este termenul pe care îl folosesc pentru a vă referi la folderul în care Flash caută fișierele AS (și folderele care conțin fișiere AS).

Dacă utilizați Flash Professional, atunci, în mod implicit, acesta va fi oricare dintre dosarele dvs. FLA este înăuntru. Puteți schimba acest lucru, totuși; consultați Sfatul rapid al lui Daniel Apt, Cum să organizați fișierele de proiect Flash, pentru mai multe informatii.

Dacă utilizați un alt editor Flash, atunci directorul ar putea fi numit ceva - dar probabil va fi un dosar numit / Src / sau /sursă/ sau /cod/ sau ceva asemănător, astfel încât să puteți da seama. (Dacă totul eșuează, creați doar un fișier AS nou și uitați-vă la ce este locația implicită de salvare.)

Încearcă-l - descărcați MinimalComps, extrageți zipul și copiați dosarul corect în directorul principal al codului proiectului. Atunci, import com.bit101.components.Accordion; și de a crea un noul Accordion () undeva în proiectul tău. Dacă nu vedeți un mesaj de eroare, ați făcut-o corect!


Căi de clasă globale

Dacă ați găsit o bibliotecă atât de utilă încât doriți să fie disponibilă în mod implicit pentru toate proiectele dvs., fără a trebui să copiați și să lipiți dosarul rădăcină în directorul principal al fiecărui proiect nou?

Pentru aceasta, puteți folosi curse clasice globale. Dacă specificați un dosar pe hard disk ca o clasă globală, îi spuneți Flash să caute întotdeauna cursuri acolo, precum și în directorul principal al codului proiectului.

Să presupunem că creați un director C: \ FlashLibraries \ (Utilizatorii Mac: cred Macintosh HD / FlashLibrări în schimb), cu un subdirector MinimalComps, și copiați / Com / folder de la zipul MinimalComps la acesta MinimalComps director. Dosarul de clasă Accordion ar fi la C: \ FlashLibraries \ MinimalComps \ com \ bit101 \ componente \ Accordion.as. Ați putea apoi să stabiliți C: \ FlashLibraries \ MinimalComps \ ca o clasă globală, și de atunci, fiecare proiect Flash pe care l-ați deschis ar putea să ruleze:

 import com.bit101.components.Accordion;

? fără probleme. Și din moment ce Flash compilează numai clase care sunt de fapt folosite în proiectul dvs., acesta nu va împacheta SWF-ul dvs. cu bibliotecile din classpath dvs. global pe care le nu face utilizare.

Puteți chiar să extrageți toate clasele de cod rădăcină ale tuturor bibliotecilor dvs. pe aceeași cale clasică globală - adică, ați putea seta C: \ FlashLibraries \ ca o cale clasică globală, apoi copiați / Com / din dosarul MinimalComps în acest dosar, astfel încât clasa Accordion ar fi la C: \ FlashLibraries \ com \ bit101 \ componente \ Accordion.as. (Probabil că nu merită efortul, dacă ați descărcat biblioteca noastră imaginară Activetuts +, ar fi așezat C: \ FlashLibraries \ com \ tutsplus \ activ \, ceea ce înseamnă că / Com / director ar conține atât a / Bit101 / dosarul și a / Tutsplus / pliant. Aceasta nu este o problemă, dar se face dezordonată și poate face foarte dificilă ștergerea ulterioară a unei singure biblioteci.)


Cum să setați o clasă globală de cursă

În Flash CS3, faceți clic pe Editați | Preferințe, apoi faceți clic pe ActionScript și selectați Setările ActionScript 3.0. Veți vedea o listă de directoare. Faceți clic pe semnul Plus pentru a adăuga unul nou; aveți posibilitatea să tastați locația în, sau să apăsați pe țintă pentru a o parcurge.

În versiunile ulterioare ale Flash Professional, există mai mult de atât. Clic Editați | Preferințe, apoi alegeți ActionScript categorie și faceți clic pe Setările ActionScript 3.0 Ca înainte. Formularul de înscriere este puțin diferit:

De data aceasta, utilizați Calea sursei pentru a stabili punctele de clasă globale. Utilizați semnul Plus pentru a adăuga o intrare nouă, iar pictograma dosarului pentru a căuta în dosar.

Dacă utilizați un mediu de dezvoltare diferit, setările globale de clasă vor fi în altă parte. De exemplu, în FlashDevelop, selectați Proiect | Proprietăți, apoi Classpaths și dați clic pe Editați cursurile de clasă globale? .


Pereți de clasă pentru proiecte sau nivel de document

Ce faceți dacă dezvoltatorul bibliotecii va lansa o nouă versiune? Puteți să o descărcați pe o clasă globală, suprascriind versiunea anterioară și să o utilizați în cel mai recent proiect. Dar, dacă deschideți unul dintre proiectele mai vechi - unul care a folosit versiunea anterioară a bibliotecii - veți rula în tot felul de probleme de incompatibilitate.

S-ar putea rezolva acest lucru având un singur dosar pentru fiecare versiune a bibliotecii: C: \ FlashLibraries \ MinimalComps \ v1 \, C: \ FlashLibraries \ MinimalComps \ v2 \, C: \ FlashLibraries \ MinimalComps \ v2.5 \, C: \ FlashLibraries \ MinimalComps \ v3 \,? si asa mai departe. Apoi, de fiecare dată când deschideți un proiect, creați o nouă cale clasică globală ca dosar pentru versiunea bibliotecii pe care proiectul dvs. o are nevoie și ștergeți toate celelalte.

Asta funcționează, dar este un flux de lucru oribil. În schimb, puteți seta o cale de clasă specifică unui proiect.


Cum să setați o cale de curs pentru un proiect sau un nivel de document

În Flash Professional CS3 și mai recent, odată ce ați deschis un FLA, faceți clic pe Fișier | Publicați setările, apoi selectați bliț și dați clic pe Setări lângă ActionScript 3.0. În Flash CS3, dialogul arată astfel:

La fel ca atunci când stabiliți o cale clasică globală, puteți utiliza butonul Plus pentru a adăuga o intrare nouă, iar pictograma Target pentru a căuta un dosar. În versiunile ulterioare de Flash, dialogul are mai mult de atât:

Nu vă faceți griji cu privire la celelalte file; utilizați doar Calea sursei pentru a adăuga calea de cursă dorită.

Din nou, diferite medii de dezvoltare vor stoca aceste setări în locuri diferite. Pentru a adăuga o cale de clasă a proiectului în FlashDevelop, selectați Proiect | Proprietăți, apoi Classpaths și dați clic pe Adăugați Classpath? .


Căi relative

Imaginați-vă că construiți un joc Flash care are versiuni ușor diferite pentru diferite portaluri de jocuri și un editor de nivel separat. Structura dosarului dvs. poate arăta astfel:

 C: \ MyAwesomeGame \ game_core \ C: \ MyAwesomeGame \ game_kongregate \ C: \ MyAwesomeGame \ game_newgrounds \ C: \ MyAwesomeGame \

Acum, să presupunem că doriți să utilizați MinimalComps în toate versiunile jocului, și în editorul dvs. de nivel - nu doar o versiune veche a MinimalComps, ci mai ales cea mai recentă versiune, în fiecare proiect. Între timp, aveți un alt proiect care este scris cu o versiune veche a MinimalComps, deci nu doriți să utilizați o clasă de clasă globală.

Puteți crea un folder nou în dosarul dvs. de bază:

 C: \ MyAwesomeGame \ biblioteci \

? și apoi copiați directorul rădăcină al bibliotecii direct la ea, astfel încât clasa Accordion ar fi la C: \ MyAwesomeGame \ biblioteci \ com \ bit101 \ componente \ Accordion.as.

Acum, știți că puteți seta o cale de clasă la un proiect sau la nivel de document în fiecare dintre versiunile de joc diferite și editorul de nivel, pentru a indica C: \ MyAwesomeGame \ biblioteci \, dar ce dacă trebuie să partajați toate fișierele de joc cu altcineva - poate o echipă întreagă? Ei vor trebui fie să se asigure că structura lor de dosare se potrivește exact cu dvs., fie să treacă prin fiecare dintre proiecte și să modifice rutele de clasă pentru a se potrivi cu computerul, de fiecare dată când primesc cea mai recentă versiune. Ce enervant!

În schimb, puteți utiliza a ruta relativă. Presupunând că directorul principal al editorului de niveluri este / LevelEditor /, apoi dacă ați stabilit o cale de clasă ? / biblioteci / acesta va arăta în dosarul corect. De ce? pentru că ? / înseamnă "directorul deasupra celui curent".

Aceasta înseamnă că poți folosi ? / biblioteci / pentru toate versiunile jocului dvs. și aceștia vor îndrepta către același director. Și apoi, când împărțiți codul cu colegii de echipă, îi puteți da întregul / MyAwesomeGame / și va conține Tot ei au nevoie de. Există mai puține lucruri pe care trebuie să le rețineți - nu este nevoie să schimbați rutele de clasă sau să copiați fiecare versiune nouă a bibliotecii în diferitele foldere diferite - și astfel există mult mai puține șanse de a face o eroare simplă. Grozav!

(Ați putea lua acest lucru și mai mult și puneți tot codul pe care diferitele versiuni ale jocului le împărtășesc în dosar C: \ MyAwesomeGame \ partajat \? dar asta se îndepărtează de subiectul acestui articol!)

Poți să cuipești specialul ? / de asemenea: ? /? / urcă două directoare în loc de unul singur și așa mai departe. Puteți utiliza, de asemenea ./ pentru a se referi la "directorul curent".


Fișiere SWC

Cum am spus, un fișier SWC este în esență un fișier zip care conține clase ActionScript și alte astfel de date. De exemplu, în ghidul FlashDevelop, am explicat cum să exportați materiale de bibliotecă create în Flash Professional ca SWC, astfel încât acestea să poată fi utilizate într-un alt flux de lucru. Este posibil să faceți același lucru și cu clase bazate exclusiv pe cod.

Nu voi explica cum să creați un astfel de SWC aici, dar voi explica cele două avantaje principale pentru dezvoltatorii de biblioteci:

  1. Întreaga bibliotecă (inclusiv activele grafice) poate fi inclusă într-un singur fișier.
  2. Conținutul claselor individuale (adică fișierele AS) nu poate fi vizualizat sau modificat.

Aveți în continuare posibilitatea să utilizați biblioteca SWC într-un singur proiect, în toate proiectele dvs. sau să fiți împărtășite între câteva dintre ele, deși mijloacele pentru includerea lor în proiectele dvs. sunt ușor diferite de cele când aveți fișiere clasa reale.


Utilizarea bibliotecilor SWC în proiectele dvs.

Flash Professional CS3 are unele restricții majore atunci când vine vorba de utilizarea bibliotecilor SWC: nu poate folosi SWC-uri care sunt doar o colecție de fișiere de clasă. Dacă SWC conține componente, îl puteți muta la dvs. /Componente/ (pe Flash) trageți-l din panoul Components în bibliotecă sau pe scenă. Acest director este la C: \ Fișiere de program \ Adobe \ Adobe Flash CS3 \limba\ Configuration \ Componente \ în mod prestabilit în Windows și Macintosh HD / Aplicații / Adobe Flash CS3 / Configurație / Componente implicit pe Mac OS X.

Puteți copia componentele SWC în folderele echivalente din Flash Professional CS4 + dacă doriți să le accesați prin intermediul panoului Components. Pentru modulele SWC care sunt alcătuite din clase de coduri, le puteți seta și ca o cale de clasă globală sau o cale de clasă a unui document sau a unui proiect.

Pentru a seta o cale clasă globală, faceți clic pe Editați | Preferințe, apoi alegeți ActionScript categorie și faceți clic pe Setările ActionScript 3.0 Ca înainte. Veți vedea acest dialog:

Adăugați locațiile SWC-urilor la Calea bibliotecii. După cum sugerează dialogul, puteți pune mai multe SWC-uri în același director și îndreptați-l spre acel dosar.

(The Calea bibliotecii externe caseta poate fi utilizată pentru a specifica bibliotecile SWC care ar trebui să fie încărcate la timpul de execuție, mai degrabă decât atunci când componenta este compilată. Dacă ați primit cantități uriașe de cod și resurse distribuite între proiectele dvs., puteți reduce timpul de încărcare pentru utilizatorii dvs. prin plasarea tuturor resurselor partajate într-un fișier SWC și utilizând-o ca o bibliotecă externă; utilizatorii vor trebui să-l descarce o singură dată și apoi să-l poată utiliza în fiecare dintre celelalte proiecte. Probabil că nu este ceea ce vrei să faci cu bibliotecile pe care le-ai descărcat, totuși!)

Pentru a seta un SWC la nivel de document în Flash Pro CS4 și mai sus, odată ce ați deschis un FLA, faceți clic pe Fișier | Publicați setările, apoi selectați bliț și dați clic pe Setări lângă ActionScript 3.0. Treceți la Calea bibliotecii tab. Dialogul arată astfel:

Puteți folosi căi relative aici, la fel ca atunci când aveți fișiere de clasă individuale.

Diferitele medii de dezvoltare vor avea modalități diferite de a importa SWC-uri. Pentru informații despre utilizarea SWC în FlashDevelop, consultați ghidul meu.

Sper ca te ajuta! Acum, când un tutorial spune "descărcați această bibliotecă", trebuie să știți exact ce să faceți :) Spuneți-mi dacă ceva este neclar și o voi clarifica pentru dvs..

Cod