Cum se utilizează o clasă de documente în Flash

Facem câteva modificări la Activetuts +. De acum încolo, tutorialele noastre vor folosi codul bazat pe clasă, în loc de codul temporal, ori de câte ori este posibil. Acest sfat rapid explică ce trebuie să știți.


De ce utilizați fișierele de clasă?

O să recunosc - uneori, codarea în întregime pe cronologie este utilă. Este o modalitate rapidă de a testa un efect și cel mai simplu mod de a sincroniza acțiunile cu anumite cadre ale unei animații.

Dar pentru orice proiect care se bazează mai mult pe cod decât pe animație, există dezavantaje serioase. Toate acțiunile dvs. ActionScript sunt prinse în interiorul fișierului FLA; nu puteți împărți programarea între diferiți dezvoltatori, trebuie să copiați și să lipiți codul dacă doriți să îl reutilizați și sunteți obligat să utilizați Panoul de acțiuni al Flash.

Folosind fișiere de clasă setați codul liber. Și nu este cu adevărat mai greu decât să codificați pe cronologie; aceasta implică doar un pic mai mult de configurare. Vă voi ajuta să creați un proiect Flash care utilizează clase, apoi să detaliați în detaliu un fișier de clasă.

(O parte din motivul pentru care trecem la cursuri este de a face mai ușor dezvoltatorii AS3 care nu utilizează Flash în sine pentru a urma tutorialele noastre. Dacă sunteți unul dintre ei, mă aștept să vă obișnuiți cu cursurile deja , dar puteți citi întotdeauna acest sfat rapid ca o reîmprospătare - ignorați doar biții despre Flash!)


Pasul 1: Creați un FLA

Sunt sigur că știi deja cum să faci asta. Deschideți Flash și faceți clic pe Fișier> Fișier nou ... Flash (ActionScript 3.0). Salvați-l oriunde doriți. Am sunat pe a mea Example.fla, dar nu contează ce nume alegeți.


Pasul 2: Creați un fișier ActionScript

Clic Fișier> Fișier ActionScript nou .... Salvați ca Main.as în același folder ca și FLA.

Acest fișier este în cazul în care vom pune codul care stăpânește FLA în sine, dar modul în care Flash va ști cum să-l găsiți?


Pasul 3: Legați FLA la fișierul AS

Este posibil să aveți zeci de fișiere AS în același folder ca FLA, așa că Flash nu va dori să ghicească pe cine să folosească. Va trebui să-i spunem.

Treceți la instrumentul Selecție (Shortcut: V), apoi asigurați-vă că nu ați selectat nimic (apăsați Ctrl-Shift-A). Deschideți panoul Proprietăți (Fereastră> Proprietăți).

Dacă utilizați Flash CS3, acesta va arăta astfel:

Panoul de proprietati Flash CS3

introduce Principal în caseta cu eticheta "Clasă document" - care se potrivește cu numele fișierului dvs. ActionScript, minus extensia de fișier ".as" ...

Dacă utilizați Flash CS4, acesta va arăta astfel:

Panoul de proprietăți Flash CS4

În acest caz, va trebui să introduceți Principal în caseta cu eticheta "Clasă". Din anumite motive, Adobe a abandonat bitul "Document".


Pasul 4: (Opțional) Reorganizați structura folderului

Nu trebuie să țineți toate fișierele în același director. Consultați acest ecran rapid, dacă doriți să știți cum să mutați lucrurile în jur.


Pasul 5: Scrieți clasa de documente

Deschideți fișierul Main.as și inserați următorul cod:

 pachet import flash.display.MovieClip; clasa publică Extensie principală MovieClip funcția publică principală () 

Aceasta este o clasă de documente goale de bază. Este cea mai mică cantitate de cod pe care o putem scrie, care va funcționa. Permiteți-

Cuvântul cheie din pachet îi spune lui Flash că tot codul dintre cotierele lui curl face parte dintr-un singur grup.

Cuvântul cheie din pachet îi spune lui Flash că tot codul dintre cotierele lui curl face parte dintr-un singur grup.

Clasa de cuvinte cheie clasifică împreună și variabilele.

Scris clasa principală și grupurile codifică împreună, dar într-un mod diferit. Clasele conțin funcții și variabile; pachetele conțin clase și declarații de import.

Notă: trebuie să oferiți clasei dvs. același nume ca fișierul AS: Principal.

Ce ziceti public? Asta înseamnă că alte clase din codul dvs. vor putea vedea această clasă.

Vrem ca clasa noastră să extindă funcționalitatea unui MovieClip obișnuit - prin urmare,

Această clasă Principal ne va conduce FLA. În mod implicit, FLA este un clip video (are o cronologie).

Noi vrem Principal pentru a putea face tot ce poate face un clip video, plus mai mult pe baza codului pe care îl scriem. Cu alte cuvinte, dorim extinde funcționalitatea unui regulat MovieClip.

(Uneori, este posibil să nu mai fie nevoie să facem animații pe cronologia principală a scenei, în acest caz nu trebuie să extindem filmul MovieClip și putem doar să extindem Sprite în schimb. ca nextFrame () funcţie. Deci, dacă nu sunteți sigur dacă doriți să extindeți MovieClip sau Sprite, mergeți pentru MovieClip - este mai sigur!)

Linia

MovieClip este ea însăși o clasă.

Flash nu monitorizează automat unde sunt stocate toate fișierele de clasă; pentru ca noi extinde MovieClip cod pentru a lucra, trebuie să-i spunem unde să găsească clasa MovieClip. Asta e ceea ce import line nu.

Comenzile de import intră întotdeauna în pachet și în afara clasei, în partea de sus.

Fiecare clasă conține o funcție cu același nume ca și clasa. Codul din interiorul acestuia se execută atunci când se creează un obiect de acest tip de clasă - în cazul nostru, când SWF este încărcat.

Fiecare clasă conține o funcție cu același nume ca și clasa. Se numește constructor funcţie.

Tot codul din interiorul acestei funcții se execută atunci când este creat un obiect de acest tip de clasă - în cazul nostru, codul dintre aceste brațe curbate se va executa când SWF este încărcat.

Nu vă faceți griji dacă simțiți că nu înțelegeți toate acestea încă. Odată ce începeți efectiv să folosiți clasele și să vă scrieți propria dvs., totul se va opri.


Pasul 6: Faceți-o do Ceva

După cum am spus în pasul 5, funcția constructorului conține primul cod care trebuie rulat când SWF este încărcat. Deci, să punem ceva acolo pentru a ne asigura că totul funcționează:

 pachet import flash.display.MovieClip; public class Main extinde MovieClip funcția publică Main () trace ("Da, e de lucru"); 

Linia 8 este singura nouă. Testați SWF-ul în mod obișnuit (Control> Testați filmul). Dacă totul este bine, ar trebui să vedeți "da, este de lucru" pop-up în panoul de ieșire. Dacă nu…

  • Ați salvat modificarea pe care ați făcut-o la Main.as?
  • Este setată Clasa de documente a FLA Principal?
  • Testați definitiv filmul Example.fla?

Dacă niciuna dintre aceste întrebări nu ajută, trimiteți un comentariu.


Pasul 7: Încercați ceva mai puțin complex

Încercați să înlocuiți codul Main.as cu:

 pachet import flash.display.MovieClip; clasa publică Extensie principală MovieClip funcția publică principală () var greeting: String = "Hello"; urmărire (salut); 

Simplu, nu? Tocmai am creat o nouă variabilă de șir în interiorul funcției constructorului. Acum, să adăugăm o nouă funcție:

 pachet import flash.display.MovieClip; clasa publică Extensie principală MovieClip funcția publică principală () var greeting: String = "Hello"; changeGreetingToFrench (); urmărire (salut);  funcția publică changeGreetingToFrench (): void greeting = "Bonjour"; 

Există câteva lucruri de reținut aici.

În primul rând, noua funcție intră în clasă și după constructorul - prin convenție, constructorul este prima funcție din clasă.

În al doilea rând, noua funcție este public; când codificați în interiorul unei clase (și nu pe cronologie), este o practică bună să puneți "public" (sau "privat" sau "protejat", dar le las pe aceștia pentru o altă postare) la începutul liniei care definește funcția . Este doar o modalitate de a lăsa alte clase să știe dacă au sau nu acces la ea.

În al treilea rând, definiția noii funcții se încheie cu : void. Aceasta înseamnă că nu aduce o valoare. Funcțiile constructorului nu au nevoie de : void pentru că ei nu se poate returnați o valoare.

Dacă testați acest film, veți primi un mesaj de eroare:

Main.as, Linia 15: 1120: Accesul la salutul de proprietate nedefinit.

Când creați o variabilă în interiorul unei funcții, aceasta nu poate fi accesată de alte funcții. Dacă doriți ca fiecare funcție din clasă să poată accesa variabila, trebuie să o declarați în interiorul clasei, dar in afara toate funcțiile:

 pachet import flash.display.MovieClip; clasa publică principală se extinde la MovieClip salut public public: String = "Hello"; funcția publică principală () changeGreetingToFrench (); urmărire (salut);  funcția publică changeGreetingToFrench (): void greeting = "Bonjour"; 

La fel ca în cazul funcțiilor, dacă declarați o variabilă în afara unei funcții, trebuie să o porniți cu "public" (sau "privat" sau "protejat"). Spre deosebire de funcții, variabilele ar trebui definite de mai sus constructorul.

Testați-vă filmul acum și ar trebui să obțineți în sfârșit un frumos salut în franceză. Cât de util!


Înfășurarea în sus

Deci, acest lucru nu este exact un rezultat interesant, dar sperăm că acum vă simțiți capabili să urmați tutoriale care nu codifică pe cronologie.

Chiar vreau să mă asigur că toată lumea înțelege cum să folosească o clasă de documente, așa că vă rog, dacă vreunul dintre acestea nu a fost clar, postați o notă în comentarii. După ce vom rezolva confuzia, voi edita Sfat rapid pentru a ușura înțelegerea următoarei persoane. Mulțumiri :)

Cod