Programare în Macromedia Flash. Crearea de jocuri Flash

Programare

Nu presupuneți că ați învățat să programați studiind capitolul Introducere în ActionScript și capitolul Elemente ActionScript pentru crearea de jocuri Există o diferență între a putea scrie cod ActionScript și a avea experiență în programare.
Programarea este dificilă pentru majoritatea oamenilor, dar ușoară pentru mine. Dar am o diplomă în informatică și programez de 18 ani. Fără o experiență similară, nu ar trebui să vă așteptați la rezultate rapide.
Iată câteva principii care vă vor ajuta să învățați să programați. Ca orice abilitate, programarea necesită timp pentru a învăța. Vei descoperi că, cu cât programezi mai mult, cu atât devine mai ușor.

Analiza sarcinilor


Este important să realizați că, dacă o sarcină pare prea mare pentru a fi gestionată, probabil că este. Împărțiți-l în sarcini mai mici și veți găsi o soluție.

Reguli de programare

În timp ce învățați programarea, există câteva reguli de urmat care vă vor ușura munca. Aceste reguli sunt respectate de programatori din întreaga lume, folosind toate limbajele de programare:

Comentarii - Ar trebui să vă obișnuiți să adăugați comentarii la codul dvs. Chiar și liniile care par clare în acest moment pot deveni neclare dacă revii la ele o lună mai târziu;
nume de variabile- folosiți nume de variabile care reflectă scopul acestora. Acestea vor completa comentariile și vă vor ajuta să înțelegeți codul atunci când veți reveni la el mai târziu;
nume de funcții - toate cele de mai sus se aplică numelor de funcții. Ei trebuie să descrie acțiunile pe care le efectuează;
cu cât mai scurt, cu atât mai bine- Blițul nu are limită de lungime a unei funcții. Cu toate acestea, dacă scrieți o funcție care are o lungime de 100 de linii, veți avea dificultăți să o editați mai târziu. Este mai bine să împărțiți funcția în sarcini și să puneți fiecare sarcină într-o funcție separată;
includeți funcții reutilizabile în codul dvs- în timpul programării, nu uitați să vă gândiți la modul în care puteți aplica această sau acea funcție la o sarcină similară sau similară într-o altă parte a programului dvs. Să presupunem că aveți nevoie de o funcție care adaugă un punct la scorul unui jucător. Încercați să utilizați un parametru care vă permite să adăugați nu numai unul, ci și orice alt număr de puncte la scorul dvs.;
încercați să evitați codificarea tare- Codificarea tare înseamnă includerea unor numere specifice în codul tău. Să presupunem că codul tău folosește valoarea 550 pentru a descrie partea dreaptă a spațiului de lucru, acesta va fi codificat în program. Dacă decideți să extindeți zona de lucru la 600 de pixeli, va trebui să modificați fiecare utilizare a valorii 550 din cod. Este mai bine să setați o variabilă numită screenRightSide la 550 la început și să utilizați această variabilă pe tot parcursul programului;
buna organizare- un programator bun trebuie, fără îndoială, să fie capabil să organizeze diverse elemente ale unui program. De exemplu, funcțiile nu ar trebui plasate în cadre diferite, ci într-un singur cadru al videoclipului dvs. În plus, încercați să grupați funcțiile în funcție de sarcinile pe care le îndeplinesc.

Toți programatorii trebuie să depaneze programele pe care le creează. Este imposibil să faci ca un program să funcționeze impecabil prima dată când îl lansezi. Un bun specialist ar trebui să fie capabil să depaneze un program.
Pe lângă utilizarea depanatorului ActionScript, puteți depana într-o varietate de moduri. Când testați redarea unui videoclip, în fereastra de ieșire pot apărea mesaje de eroare. Uneori, acest lucru este suficient pentru a înțelege unde în cod aveți probleme.
Informațiile despre program pot fi, de asemenea, plasate în fereastra Ieșire folosind comanda trace. Vă va ajuta să urmăriți anumite momente ale programului și valoarea anumitor variabile în aceste momente.
Dacă doriți să utilizați depanatorul, vă recomandăm să citiți manualul Flash MX pentru mai multe informații. Depanatorul este un instrument simplu care vă permite să afișați valori variabile în timp ce se redă un film Flash. Cu toate acestea, ea nu este capabilă să facă minuni; Depanatorul vă poate ajuta doar să vă înțelegeți propriul proiect.

Testare

Următorul pas în depanare este testarea jocurilor de către alți oameni. Testarea este un aspect important, mai ales dacă jocul este dezvoltat de tine la nivel profesional. În calitate de programator, nu veți putea evalua în mod obiectiv munca creației dumneavoastră și deficiențele acesteia.
Probabil că vei învăța multe prima dată când cineva joacă jocul tău. Nu ți-ai imaginat niciodată că va face clic pe astfel de elemente. Poate trage elemente în afara zonei de lucru sau poate sta în calea unde nu ar trebui să fie.
De obicei, înainte de prezentarea oficială în fața unui public larg, jocul trece prin două etape de verificare. În prima etapă (testare alfa), jocul este testat de colegii sau prietenii tăi. Testarea beta este efectuată de persoane din afara companiei sau rețelei dvs. În ambele faze, ar trebui să primiți notificări despre orice probleme găsite și să lansați versiuni actualizate ale jocului pe măsură ce acestea sunt remediate.

Din păcate, adesea, atunci când codul este corect din punct de vedere sintactic, programul produce rezultate neașteptate. De exemplu, deoarece Flash nu are nevoie de o declarație specială de variabile, va mânca cu ușurință numele unui obiect inexistent (puteți introduce cu ușurință numele greșit) și va efectua cu sinceritate toate acțiunile care îi sunt atribuite.

Defectele programului includ nu numai erori, ci și conținut inadecvat de joc și funcții lipsă. Încercați să vă perfecționați jocul cât mai mult posibil înainte de a-l declara terminat.

Programare flash

program de curs opțional și manual didactic pentru profesor și elev

Programul cursului. 1

1. Introducere: 1

2. Subiecte de curs: 2

3. Literatură: 2

Manual didactic pentru profesori și elevi. 2

1. Introducere, fereastra „acțiuni în cadru”. 2

2. Variabile. 4

3. Câmpuri I/O. 5

4. Operator condiționat. 8

5. Bucle „cu un parametru” și bucle „while”. unsprezece

7. Programare orientată pe obiecte. 17

8. Schimbarea programatică a proprietăților. 19

9. Cicluri cu trei cadre. Animație software. 22

10. Proiect „Joc interactiv – Poligon de tragere”. 24

Programul cursului

1. Introducere:

Programul Macromedia Flash uimește prin capacitățile sale. Pe lângă instrumentele avansate de desen și animație, Flash are încorporat un limbaj de programare Action Script. Stăpânirea acestui limbaj vă permite nu numai să creați animație de program, jocuri Flash și pagini web interactive, ci vă oferă și cunoștințe despre tehnologiile de programare orientată pe obiecte (denumite în continuare OOP).

În ciuda faptului că creatorii Flash au încercat să simplifice programarea chiar și pentru un utilizator neinstruit, stăpânirea acestor instrumente necesită destul de mult timp. Acest curs este opțional; studenții îl aleg pentru a face o alegere mai informată a unei specializări în liceu. Un studiu detaliat al programului și implementarea unor proiecte serioase poate fi sarcina cursurilor specializate (de exemplu, „Programare web”, „Design web”, „Programare orientată pe obiecte”, etc.), precum și un studiu independent. Cursul de Programare Flash este destinat elevilor de clasa a IX-a care sunt deja familiarizați cu animația Flash și noțiunile de bază ale programării. Ca parte a cursului opțional, este foarte posibil să stăpânești elementele de bază ale programării, tehnologia OOP și să implementezi proiecte simple în Flash. Cursul include 8 proiecte, inclusiv un proiect de calculator Flash și un proiect de joc interactiv. Cursul este dotat cu un manual didactic pentru profesori și elevi.

Scopul cursului:

Să intereseze studenții, să arate capacitățile software-ului modern pentru crearea de aplicații interactive; introduceți elementele de bază ale programării orientate pe obiecte; Aprofundarea cunoștințelor despre Macromedia Flash.

Obiectivul cursului:

Introducerea tehnologiei de programare orientată pe obiecte; arătați utilizarea Action Script pentru a crea aplicații interactive; creați două proiecte: un calculator Flash și un joc interactiv în galerie de împușcături.

Cerințe de cunoștințe ale elevilor:

Pentru a finaliza cu succes acest curs, studenții trebuie să aibă cunoștințe de bază despre Flash: crearea de imagini simple, lucrul cu simbolurile bibliotecii, să înțeleagă cadrele cheie, animația Flash și acțiunile de bază în Action Script.

Pentru a finaliza cu succes acest curs, studenții trebuie să aibă cunoștințe de bază de programare: să stăpânească concepte precum algoritm, program, variabilă și să cunoască structuri algoritmice de bază.

Cerințe de calculator:

Un computer cu Macromedia Flash MX (sau mai mare) instalat.

Cursul „Programare Flash” este conceput pentru 12 ore.

2. Subiecte de curs:

Subiecte

număr de ore

Repetați Flash.

Câmpuri I/O, structuri algoritmice

tipuri de câmp (static, dinamic, de ieșire); declararea variabilelor, variabilelor caractere și numerice, adăugarea codului la un buton, instrucțiunea condiționată, bucla cu un parametru, bucla while, implementarea lor în Flash.

sarcini tipice: calcularea costului unui zbor, rezolvarea unei ecuații pătratice, exponențiarea, găsirea unui element dintr-o serie suma unei serii

proiect: Calculator Flash

Concepte de bază ale POO

obiect, proprietăți, metodă, eveniment

Schimbarea programatică a proprietăților. Animație software.

proprietăți modificabile; crearea de simboluri, numele acestora; modificarea proprietăților caracterelor, caracteristicile execuției codului de program în Flash, cicluri cu trei cadre.

Sarcini tipice: crearea unui obiect cu proprietăți modificabile (apăsarea tastelor corespunzătoare). crearea unui obiect în mișcare.

proiect: Joc interactiv Shooting Range.

3. Literatură:

Beluntsov V. Macromedia Flash: Animație pe Internet. „DESS Com”, Moscova 2001. Materiale Flash MX 2004 de pe site-ul www. *****

Manual didactic pentru profesor și elev

1. Introducere, Paleta de acțiuni

Macromedia Flash are propriul limbaj de programare, Action Script. Vă permite să faceți videoclipuri Flash interactive. Capacitățile limbajului sunt destul de mari, ceea ce vă permite să creați programe serioase. Action Script nu este un limbaj de programare independent. Este un set de scripturi - fragmente de cod care „trăiesc” doar în interiorul unui film Flash, care, totuși, nu interferează cu crearea de programe cu drepturi depline.

Trebuie să rețineți că Action Script este un limbaj bazat pe evenimente, adică scriptul va fi executat atunci când are loc un eveniment. Un astfel de eveniment ar putea fi atunci când se atinge un anumit cadru cheie, de exemplu, la ultimul cadru cheie adăugăm o comandă stop(). În ciuda faptului că aceasta este doar o comandă, acesta este un script cu drepturi depline care va fi executat când se ajunge la ultimul cadru - videoclipul se va opri. Un alt eveniment poate fi un clic de mouse pe un buton de pe ecran sau o apăsare a tastei de la tastatură.

Pentru a adăuga codul programului, trebuie să selectați cadrul cheie în care doriți să adăugați scriptul (sau să selectați butonul creat) și să apăsați tasta F9 (Figura 1).

Orez. 1 Panou de acțiuni.

Să ne uităm la elementele principale ale ferestrei Acțiune. Partea stângă a ferestrei este ocupată de o listă de comenzi pe care le poți selecta făcând dublu clic pe ele cu butonul stâng al mouse-ului. Toate comenzile, și există destul de multe dintre ele, sunt grupate în douăsprezece blocuri „Funcție globală”, „Proprietăți globale”, etc. După ce faceți clic, comanda este transferată în partea dreaptă a ferestrei. Conține codul programului. Puteți șterge comenzile inutile (tasta Ștergere) sau puteți deplasa în sus și în jos în script fie folosind tastele cursorului, fie folosind butoanele. Desigur, comanda de mutat sau șters trebuie mai întâi evidențiată. Partea inferioară a ferestrei este acordată parametrilor modificabili ai fiecărei comenzi specifice. De exemplu, în comanda de tranziție gotoAndPlay() trebuie să indicați la ce cadru să mergeți când ajungeți la această linie. Pentru a face acest lucru, trebuie să introduceți numărul de cadru necesar între paranteze.

Când scrieți codul programului, este mai convenabil și mai rapid să introduceți codul manual. Este important să rețineți că limbajul ActionScript ține seama de majuscule și minuscule în comenzile pe care le introduceți. Aceasta înseamnă că comanda GoToandPlay() va fi incorectă.

Rămâne de adăugat că pentru a rula codul și a vizualiza rezultatul, trebuie să intrați în modul de vizionare video, pentru a face acest lucru, apăsați combinația de taste Ctrl-Enter.

Întrebări de revizuire:

Ce este un scenariu? Ce evenimente declanșează execuția codului în Flash? Cum afișez paleta Acțiune? Din ce elemente constă paleta Action? Cum se creează un fișier care poate fi lansat dintr-un film Flash?

2. Variabile

Unul dintre conceptele de bază ale oricărui limbaj de programare este o variabilă. Se presupune că cititorul este familiarizat cu conceptul de variabilă, așa că haideți să vedem cum este implementat în Flash.

Să presupunem că vrem să adunăm două numere. Pentru a efectua această operație aritmetică simplă, creați un buton în primul cadru cheie: desenați un dreptunghi, faceți o legendă și apoi convertiți imaginea rezultată într-un simbol (inserați meniul - convertiți în simbol, nu uitați să setați comportamentul simbol - buton). Ca urmare, a apărut un obiect care poate răspunde la un clic de mouse, acest lucru poate fi verificat cu ușurință prin intrarea în modul de vizionare video.

Primul număr va fi stocat în variabila x1, iar al doilea în variabila x2. Lăsați rezultatul să fie salvat sub numele summa și afișat pe ecran. Pentru a crea un câmp de ieșire (mai multe despre asta în lecția următoare), faceți clic pe instrumentul de text și utilizați-l pentru a selecta o zonă a ecranului - câmpul de text viitor. Apoi accesați panoul plutitor Symbol (fereastra de meniu - panouri - simbol) și în fila Opțiuni text schimbați tipul câmpului text Stutic Text în Dimamic Text (Figura 2). Asigurați-vă că numiți acest câmp Variabilă – suma. De asemenea, pentru a face câmpul vizibil pe ecran, bifați caseta de selectare cadru/fond.

Orez. 2 Creați un câmp dinamic pentru a afișa valori.

Acum să comparăm codul cu butonul pe care l-am creat. Selectați butonul și apăsați F9.

În partea stângă a ferestrei, selectați blocul Operațiuni – Setare variabilă. În partea de jos a ferestrei setăm parametrii: variabilă – x1, valoarea 5. Vă rugăm să rețineți că lângă câmpul de valoare există o expresie de comutare a parametrului. Trebuie selectat, altfel variabila x1 va stoca numărul 5 și simbolul. Acesta este modul în care este setat tipul unei variabile. După cum înțelegeți, în AS există doar două tipuri de variabile, numerice și șir, descrieți tipurile în avans, așa cum este obișnuit în limbajul Turbo Pascal. Efectuați acțiuni similare pentru a doua variabilă, respectiv, numele acesteia este x2, iar valoarea este 8. Trebuie doar să adăugăm a treia linie - setați a treia variabilă, numele ei: summa (la fel ca și numele câmpului de ieșire) , valoare: x1 + x2, desigur, expresia elementului selectat.

Ca urmare a acestor operațiuni, în partea dreaptă aveți codul prezentat în figură (Figura 3). Vă rugăm să rețineți că fiecare comandă este separată de un punct și virgulă. Mai întâi există comanda on (release), aceasta indică faptul că acest cod va începe să fie executat atunci când tasta mouse-ului este eliberată de pe buton. Deoarece acest cod este asociat cu un buton de pe ecran, această comandă este adăugată automat. După aceea, între acolade vine codul care ar trebui să fie executat atunci când are loc evenimentul.

Asta e tot! Dacă ați făcut totul corect, atunci accesând modul de vizionare video și făcând clic pe butonul dvs., în câmpul de ieșire apare numărul 13.

Întrebări de revizuire:

Cum să setați un nume de variabilă pentru a afișa informații text sau numerice? Ce tipuri de variabile sunt folosite în Flash? Cum să arăți că variabila creată este numerică? Cum se creează un buton în Flash și se adaugă cod pentru el? Ce înseamnă comanda on (release) de la începutul scriptului?

3. Câmpuri I/O

Învățarea unui nou limbaj de programare începe cu scrierea programelor în care sunt introduse valori inițiale, apoi se produc unele transformări aritmetice cu acestea și rezultatul este afișat pe ecran. Flash folosește câmpuri de text pentru a afișa text pe ecran. Pentru a crea un câmp de text, trebuie să selectați instrumentul Text (pe bara de instrumente) și plasând cursuri în locul în care doriți să adăugați text, „desenați” un bloc de text (Figura 4).

Orez. 4 Creați un câmp de text.

Ca rezultat, aveți un câmp de text static în care puteți introduce orice text. Există trei tipuri de câmpuri de text: câmpuri statice, dinamice și de ieșire. Tipul câmpului este setat folosind fila „parametri”, panoul de simboluri (vezi capitolul anterior). Să ne uităm la scopul și setările fiecărui câmp mai detaliat:

Un câmp static este folosit pentru a afișa etichete pe o scenă Flash. După cum sugerează și numele, acest câmp nu poate fi modificat programatic. Tot ceea ce vă este la dispoziție este să setați fontul, dimensiunea, culoarea etc. La tastare, acest câmp se va extinde automat, afișând textul introdus pe mai multe rânduri. În acest caz, lățimea câmpului de text va rămâne cea pe care o setați atunci când „desenați” blocul de text. Pentru a-l schimba, trebuie să selectați blocul cu instrumentul Text și să mutați marcatorul din dreapta sus al blocului de text.

Figura 5

Un câmp dinamic este folosit pentru a crea câmpuri de ieșire în care informațiile pot fi actualizate pe măsură ce videoclipul progresează. Pentru a accesa un bloc de text în mod programatic, acesta trebuie să aibă un nume, care este specificat în câmpul „variabilă” (Figura 5). Vă sfătuiesc să folosiți doar caractere latine ca nume de variabile, fără spații. În aceeași fereastră, puteți activa proprietatea Border/Background. Acum va apărea un cadru pe foaia în care va apărea textul afișat, acest lucru este foarte convenabil. Caseta combinată, cu o singură linie selectată în mod implicit, vă permite să specificați dacă textul va fi afișat într-un rând sau în mai multe (valoarea MultiLine). Comutatorul „selectabil”, activat implicit, determină dacă utilizatorul poate selecta valori dintr-un anumit câmp, de exemplu, pentru a le copia în clipboard. La fel ca pentru orice câmp, puteți seta parametri de text: font, dimensiune, culoare etc. Dacă introduceți orice text în acest câmp, acesta va fi afișat până când programul își va schimba valoarea.

Un câmp de introducere sau un text de intrare este folosit pentru a introduce valori de la tastatură. Fereastra parametrilor câmpului de intrare arată similar cu fereastra discutată mai sus. Parametrul principal aici este și câmpul „variabil”. Specificați sub ce nume vor fi înregistrate datele introduse de utilizator.

Figura 6

Înțelegând scopul câmpurilor de text, puteți realiza următorul proiect. „Costul unui bilet de avion pentru adulți, precum și numărul de adulți și copii care călătoresc pe zbor sunt introduse în computer. Când faceți clic pe butonul corespunzător, computerul calculează costul biletului unui copil (50% din costul unui adult) și costul total al zborului.” Vedeți aspectul programului (Figura 6). După cum puteți vedea cu ușurință în această sarcină, valorile sunt introduse și rezultatele sunt afișate, tot codul trebuie executat atunci când este apăsat un buton și, prin urmare, trebuie să fie asociat cu acest buton.

Pentru a începe, creați cinci câmpuri de text statice și completați-le cu textul corespunzător.

Creați trei câmpuri de introducere, dați variabilelor pentru fiecare câmp nume unice, de exemplu: stv (prețul biletului pentru adulți), kolv (numărul de adulți) și kold (numărul de copii).

Creați două câmpuri dinamice, dați variabilelor pentru fiecare câmp nume unice, de exemplu: std (prețul biletului pentru copii) și itog (cantitatea totală a zborului).

Faceți două butoane „Calcul costului zborului” și „Ștergeți câmpurile”

Pentru primul buton, adăugați următorul cod (buton, tasta dreapta - operații):

dacă (stv==null) (

dacă (kolv==null) (

dacă (kold==null) (

itog = stv * kolv + std * kold;

Penultima linie calculează costul unui bilet pentru copii (jumătate din costul unui adult) și scrie această valoare în variabila std (numele câmpului de ieșire corespunzător). Ultima linie calculează suma totală (variabila itog) și introduce valoarea acesteia în câmpul de ieșire corespunzător.

În principiu, a fost posibil să se descurce cu aceste două linii de cod. Dar din moment ce persoana care va lucra cu acest program nu va introduce neapărat numărul zero dacă copiii nu sunt implicați în zbor. Aceasta înseamnă că costul biletului unui copil (valoare numerică) va fi înmulțit cu o valoare goală (valoare șir). Rezultatul acestei „înmulțiri” va fi un mesaj de eroare în câmpul de ieșire corespunzător. Pentru a preveni acest lucru, computerul verifică dacă câmpul de intrare este gol (kold==null) și, dacă da, atribuie valoarea egală cu zero variabilei kold. Această construcție se numește operator condiționat. Mai multe despre asta în subiectul următor. Dacă încă îți este greu să lucrezi cu condiții, le poți omite, dar nu uita, nu ar trebui să existe câmpuri goale!

Pentru a finaliza proiectul, vom adăuga codul corespunzător pentru butonul „Șterge câmpurile”:

După cum puteți vedea, când faceți clic pe acest buton, fiecărei variabile și, prin urmare, câmpului I/O, i se va atribui o valoare goală (nu există nimic între cele două ghilimele).

Întrebări de revizuire:

Ce tipuri de casete de text sunt folosite în Flash? Ce parametri modificabili are un câmp de text dinamic? Ce tip de câmp este folosit pentru a introduce valori de la tastatură? Explicați semnificația următoarei linii de cod: itog = stv * kolv + std * kold;? De ce este descris operatorul condiționat utilizat în proiect?

4. Operator condiționat

Codul programului la care ne-am uitat înainte este liniar. Fiecare comandă este executată numai după ce acțiunea anterioară a fost finalizată. În viață totul este puțin mai complicat. Deschidem o umbrelă dacă plouă, ne bucurăm dacă ne atingem scopul și calculăm rădăcinile unei ecuații pătratice dacă discriminantul este mai mare decât zero. În toate cazurile de mai sus, acționăm într-un fel sau altul. Pentru a implementa astfel de situații, toate limbajele de programare oferă un operator de ramură sau un operator condiționat. Action Script nu face excepție.

Figura 7

Operatorul condiționat este apelat făcând clic pe comanda Operations - If (Figura 7). Următoarea structură apare în partea dreaptă a ferestrei:

dacă (<Не установлено>) {

În loc de<не установлено>trebuie să scrieți o operație de comparare, o introduceți în câmpul „Condiție”. Un exemplu de astfel de condiție ar putea fi z<10, (переменная z меньше десяти).

Să ne uităm la operațiunile de bază de comparare:

> mai putin;

< больше;

>= mai mare sau egal cu;

<= меньше либо равно;

Egal (observați cele două semne egale);

Nu este egal (rețineți că semnul exclamării înseamnă negația operatorului de comparație care îl urmează).

Adesea, mai multe condiții trebuie îndeplinite simultan. Pentru aceasta, se folosesc operații booleene (logice):

&& sau și – ȘI logic;

|| sau sau – SAU logic;

Sau nu – logic NU.

De exemplu, condiția (a == 10) && (z > 5) va fi adevărată numai atunci când variabila a este egală cu zece și, în același timp, variabila z este mai mare de cinci.

O condiție este o întrebare la care pot exista doar două răspunsuri, „da” și „nu”. Dacă condiția este adevărată, atunci se efectuează acțiunile cuprinse între acolade.

Dacă trebuie să adăugăm un grup de comenzi care ar trebui să fie executate atunci când condiția este falsă, trebuie să adăugați Operations - Else. Apoi fragmentul de cod va arăta astfel:

dacă (<Не установлено>){

Pentru a adăuga comenzi, trebuie să poziționați cursorul peste linia în care ar trebui să apară comanda. Tot ce rămâne este să selectați comanda dorită în blocul corespunzător și să faceți clic pe ea cu mouse-ul.

Figura 8

Să luăm în considerare modul în care principiile enunțate sunt implementate pentru a rezolva problema clasică de găsire a rădăcinilor unei ecuații pătratice. „În computer se introduc trei numere - parametrii ecuației pătratice ax2 + bx + c = 0. Pe baza datelor introduse, computerul determină câte rădăcini are această ecuație, le calculează și afișează rezultatele pe ecran. Este prezentată o vedere aproximativă a ferestrei programului (Figura 8).

Pentru a finaliza acest proiect:

Creați trei câmpuri de intrare în primul cadru de pe scena principală și dați-le nume adecvate: a, b, c. Faceți-le vizibile granițele.

Creați câteva câmpuri de text statice pentru a eticheta câmpurile I/O: x2, =0, discriminant etc.

Creați patru câmpuri de text dinamice: d – discriminant, r – soluție, x1 – valoarea primei rădăcini, x2 – valoarea celei de-a doua rădăcini.

Creați două butoane „rezolvați ecuația” și „ștergeți”.

Pentru primul buton „rezolvare ecuație”, adăugați următorul cod de program, text marcat cu un apostrof - un comentariu, nu este necesar să-l inserați:

dacă (a == nul) (

dacă (b == nul) (

dacă (c == nul) (

‘ primele trei instrucțiuni condiționale verifică dacă câmpurile a, b, c sunt goale,

Dacă da, le atribuie valori numerice egale cu zero

‘ se calculează discriminantul (variabila d).

r = „fără rădăcini”;

‘ dacă condiția este îndeplinită, discriminantul este mai mic decât variabila d

‘ ia valoarea textului corespunzătoare

) altfel dacă (d == 0) (

r = „o rădăcină”;

x1 = (-b)/(2*a);

x2 = (-b)/(2*a);

‘ este folosită comanda Operations – Else If. Mulțumită lui, următoarele

acțiunea începe cu verificarea stării. Dacă este adevărat – discriminant

‘ este egal cu zero, se fac calcule similare, variabile legate

‘ cu câmpuri de text iau valorile corespunzătoare

r = „două boabe” + Chr(255);

„cea mai misterioasă linie. Este necesar ca inscripția „două rădăcini” să fie afișată,

Dar am avut ghinion cu litera rusă ya. Flash acceptă codul care

‘ corespunde acestei litere ca o întrerupere de linie.

' În acest scop, valoarea caracterului 255 este adăugată șirului de text. Acest

‘ acțiune – conectarea a două șiruri de text se numește concatenare.

kd = Math. sqrt(d);

x1 = (-b+kd)/(2*a);

x2 = (-b-kd)/(2*a);

‘ Comanda Math a fost folosită pentru a calcula rădăcina pătrată. sqrt(d);

‘ pentru a o numi folosiți comanda Objects – Mathematics – Sqrt

Tot ce trebuie să facem este să adăugăm următorul cod pentru al doilea buton:

Mi se pare că comentariile nu sunt necesare aici. Proiectul este gata. Salvează-l, testează-l.

Întrebări de revizuire:

Ce construct definește o instrucțiune condiționată în Flash? Care este diferența dintre construcții: dacă (<Не установлено>)() else() și dacă (<Не установлено>))? Cum setați negația în Flash? Ce sunt operațiunile booleene și cum sunt scrise în Flash? Care este diferența dintre liniile: a=10 și a==10?

5. Bucle „cu un parametru” și bucle „while”

Pentru a efectua acțiuni repetitive, limbajele de programare folosesc constructe speciale numite operatori de buclă. Există mai multe astfel de construcții ciclice, vom lua în considerare cele două cele mai comune: bucla „cu parametru” și bucla „while”. Să vedem cum sunt implementate în limbajul Action Script.

O buclă „cu un parametru” este utilizată atunci când se știe dinainte de câte ori trebuie efectuată o anumită acțiune. Puteți desena următoarea analogie - pentru a pregăti supa, trebuie să curățați șase cartofi. Dacă notați acțiunile sub forma unui algoritm liniar, veți observa că comenzile „luați cartofii”, „curățați coaja”, „spălați” se vor repeta de șase ori. Pentru a face algoritmul mai compact și, de asemenea, pentru a putea fi schimbat cu ușurință în viitor, este mai logic să scrieți acest lucru sub forma unei bucle:

Repetați (de 6 ori) (

„ia cartofii”;

„coaja pielea”;

"a spala";

Aici numărul șase este parametrul ciclului, numărul de repetări. Ceea ce este între acolade sunt comenzi repetabile. Vor fi executați de exact șase ori.

Figura 9

Pentru a crea o buclă „cu un parametru” în Flash, trebuie să selectați comanda Operations – For din fereastra Frame Actions. Ca rezultat, un design de buclă va apărea în partea dreaptă a ecranului (Figura 9).

Figura 10

Pentru acest design, trebuie să configurați trei câmpuri. Inițială – aici trebuie să scrieți valoarea inițială a unei variabile, se mai numește și contor. De exemplu, i=1. Condiția este cât timp voi schimba variabila. De exemplu, i<=10. Следующий – с каким шагом изменяется переменная i. Если вы хотите, чтобы переменная каждый раз увеличивалась на единицу, то можно записать i++. В результате появляется конструкция:

pentru (i=1; i<=10; i++) {

Semnificația sa este următoarea: variabila i va lua valori de la unu la zece, iar comenzile cuprinse între acolade vor fi executate de zece ori. Variabila i însăși poate fi folosită în corpul buclei, iar alte constructe algoritmice, instrucțiuni condiționale etc. pot fi, de asemenea, folosite acolo.

Să vedem cum este implementat acest design în următoarea problemă. „Creează un program care calculează a la puterea lui n (n este o valoare întreagă). Valorile lui a și n sunt introduse în câmpurile corespunzătoare. Aspectul programului este prezentat în Figura 10.

Creați un câmp dinamic și numiți-l un.

dacă (n<>0) {

‘ Problema are sens doar dacă n > 0, acest lucru este verificat de declarația condiționată

pentru (i=2; i<=n; i++) {

Deoarece în prima linie variabila an a luat deja valoarea egală cu a, deci valoarea inițială a contorului este două.

Pentru butonul „șterge”, adăugați următorul cod:

Comentariile mi se par inutile.

Ciclul „while” este utilizat atunci când numărul de repetări nu este cunoscut în prealabil. Să continuăm analogia - atunci când oamenii sapa cartofi, ei efectuează și acțiuni repetate: „sapă un tufiș”, „strânge cartofi”, „pune-i într-o pungă”. Chestia este că nimeni nu știe de câte ori trebuie efectuate aceste acțiuni. Prin urmare, acest ciclu poate fi scris după cum urmează:

În timp ce (există cartofi?)

De fiecare dată, după executarea setului de comenzi specificat, este necesar să se verifice dacă condiția este îndeplinită, atunci corpul buclei este executat din nou;

Figura 11

Pentru a crea o buclă „while” în Flash, trebuie să selectați comanda Operations – While din fereastra de acțiuni cadru. Ca rezultat, un design de buclă va apărea în partea dreaptă a ecranului (Figura 11).

Pentru acest design, trebuie configurat un singur câmp. Condiție – în ce condiție este executată bucla. De exemplu, y<10.

Vă rugăm să rețineți că dacă condiția nu este îndeplinită la prima apelare a buclei, atunci bucla nu este executată niciodată. De asemenea, este foarte important ca variabila y să se modifice în timpul execuției buclei, în caz contrar programul se va bucla și va bloca. De asemenea, aș dori să vă atrag atenția asupra particularității executării codului programului în Flash. Dacă parcurgeți o proprietate a unui obiect sau o valoare a câmpului dinamic, nu veți vedea că proprietatea sau valoarea respectivă se schimbă rapid atunci când o rulați. Flash va executa mai întâi complet întregul script și numai după sfârșitul ciclului va redesena ecranul și va schimba această proprietate sau valoare. Înțelegerea acestei caracteristici va fi deosebit de importantă pentru noi în a noua lecție atunci când studiem animația programului.

Figura 12

Orice algoritm care poate fi scris folosind o buclă „cu un parametru” poate fi scris și folosind o buclă „while”. Dar contrariul nu este adevărat. Există probleme care nu pot fi rezolvate prin alte metode folosind construcția „În timp ce”. Să luăm în considerare această problemă. „Se știe că seria numerelor 1, 1/2, 1/3 ... 1/n este divergentă, ceea ce înseamnă că suma acestor numere poate depăși orice număr predeterminat A. Găsiți un n astfel încât suma numerelor seria este 1 + 1/2 + 1 /3 + … + 1/n va deveni mai mare decât numărul dat A. Aspectul programului este prezentat în Figura 12.”

Creați un câmp de introducere a datelor și denumiți-l a.

Creați două câmpuri dinamice și denumiți-le n și respectiv s.

Creați numărul necesar de semnături statice „a=”, „n=”, etc.

Creați două butoane „calculați” și „ștergeți”.

Pentru butonul „calculați”, adăugați următorul cod:

‘ Deoarece în buclă este necesar să se verifice condiția s

în timp ce (s

Pentru butonul „Șterge”, codul este similar cu codul de la sarcina anterioară.

În ciuda faptului că teoretic pentru orice A există o valoare n, dar în realitate chiar și pentru A=10, n=12367. Pentru valori mari ale lui A, calculul acestei probleme poate dura minute sau ore...

Întrebări de revizuire:

Care este diferența dintre o buclă „cu parametru” și „while”?

Care ciclu este mai universal?

Ce este un „contor” într-o buclă „cu parametru” și ce înseamnă comanda i++?

Cum se scrie un program care efectuează exponențierea folosind o buclă while?

De ce se blochează programul când se execută o buclă „while”? Cum sa eviti asta?

6. Proiectul „Calculator flash”

Pentru a vedea Action Script în acțiune, să facem ceva cu adevărat util. Să facem un calculator, aspectul este prezentat în Figura 13.

Figura 13

Scopul proiectului: Crearea unui calculator standard pentru Internet cu capacitatea de a efectua operații aritmetice standard. Pentru a introduce valori, utilizați atât mouse-ul, cât și tastele standard de la tastatură.

Mai întâi, creați un câmp de ieșire dinamic și dați-i un nume ca text. În al doilea rând, creați numărul necesar de butoane pentru calculatorul nostru. În al treilea rând, să începem să ne gândim.

Ne așteaptă trei probleme:

Prima problemă este că atunci când tastați primul număr, fiecare cifră se adaugă la sfârșitul numărului deja tastat, iar după apăsarea butonului cu imaginea unei operații aritmetice, următoarea cifră este plasată la începutul liniei.

Când introducem primul număr, de exemplu 245, apăsăm secvențial butoanele 2, 4 și 5 Dar de unde știe calculatorul că atunci când apăsăm butonul 2 este două sute și nu douăzeci sau două mii? Cu alte cuvinte, de unde știi ce număr să-ți amintești în prima variabilă?

A treia problemă este că trebuie să utilizați cel puțin trei variabile pentru primul, al doilea număr și, de asemenea, pentru rezultat, dar există un singur câmp dinamic și numele variabilei sale!

220" height="52" bgcolor="white" style="vertical-align:top;background: white"> https://pandia.ru/text/78/159/images/image013_35.gif" width="12 " înălțime="36">

Pentru a rezolva prima problemă, avem nevoie de o variabilă suplimentară, să o numim stek. Scopul său este de a urmări acțiunea curentă. Când este introdus primul număr, valoarea acestuia ar trebui să fie, să zicem, unu. În momentul în care începe să fie introdusă a doua cifră a primului număr, valoarea variabilei ar trebui să fie deja, să zicem, două. În momentul în care începe să fie introdus al doilea număr, valoarea variabilei ar trebui să fie deja egală cu trei. În momentul calculării rezultatului, variabila stek trebuie să ia din nou o valoare egală cu unu, astfel încât rezultatul rezultat să devină primul număr pentru acțiunile ulterioare.

Toate acestea înseamnă că nu ne putem descurca cu un singur cadru cheie. Este recomandabil să creați un cadru cheie pe un nou strat și să setați valoarea variabilei stek din acesta la unu. În al doilea cadru cheie, adăugați o singură comandă Acțiuni de bază – Stop. Mutați conținutul stratului calculatorului, care conține toate butoanele, în al doilea cadru (Figura 14). Acum, când pornește programul, variabila stek capătă valoarea dorită, videoclipul trece la al doilea cadru și se oprește. Toate acțiunile ulterioare vor avea loc acolo.

Figura 14

Pentru a rezolva a doua problemă, valoarea de intrare trebuie să fie text! Când faceți clic pe un număr, de exemplu 1, un alt caracter va fi adăugat la șirul de text format din numere

Ei bine, operatorul condiționat și variabila stek vor ajuta la sfârșitul problemei. De mai jos

codul atribuit tastei 1 este prezentat pentru toate celelalte butoane codul este similar.

activat (eliberare, tasta Apăsați „1”) (

Pe lângă versiunea obișnuită (lansare), a fost adăugată și capacitatea de a utiliza tastatura. KeyPress „1” înseamnă că următorul cod va fi executat nu numai atunci când apăsați un buton de pe ecran, ci și atunci când apăsați o tastă de pe tastatură. Consultați Figura 15 pentru cum să realizați acest lucru.

Dacă variabila stek este egală cu unu, atunci variabila text asociată câmpului dinamic de ieșire va lua o valoare egală cu unu, iar variabila stek va deveni egală cu două.

) else if (stek==2) (

Dacă variabila stek este două, atunci una nu este prima cifră din număr, deci este atașată variabilei text din dreapta

) else if (stek==3) (

Dacă variabila stek este egală cu trei, atunci una este prima cifră din al doilea număr

Figura 15

A treia problemă poate fi rezolvată destul de ușor. Trebuie să stocăm numerele introduse în variabile intermediare. Să analizăm codul programului corespunzător tastelor de operare aritmetică, acestea implementează o soluție la această problemă:

activat (eliberare, apăsați tasta „+”) (

și codul programului corespunzător tastei egale.

activat (eliberare, apăsați tasta „=") (

text = parseFloat(a)+parseFloat(text);

) altfel dacă (o=="m") (

text = parseFloat(a)-parseFloat(text);

) else if (o=="u") (

text = parseFloat(a)*parseFloat(text);

) else if (o=="d") (

text = parseFloat(a)/parseFloat(text);

Totul ar trebui să fie clar în primul fragment. Dacă se apasă tasta plus, o altă variabilă o ia valoarea p (plus), iar valoarea textului variabilei este stocată într-o variabilă temporară a. Și când tasta egală este apăsată în cele din urmă, computerul trebuie să adauge valoarea stocată în textul variabilei și variabila a. Deoarece valorile textului sunt stocate în variabile, este necesar să folosiți funcția parseFloat(), care convertește o expresie text într-un număr. Pentru a-l apela, utilizați comanda Functions – parseFloat.

Lansați proiectul, testați-l. Acest lucru nu înseamnă că calculatorul rezultat este perfect. Nu are funcții matematice standard pentru a efectua mai multe acțiuni la rând, trebuie întotdeauna să apăsați egal. Dar toate îmbunătățirile le poți face singur. Am învățat principalul lucru. Creați produse software simple folosind Macromedia Flash.

Întrebări de revizuire:

Ce probleme am întâmpinat la crearea calculatorului? Care este scopul variabilei stek? De ce ar trebui să fie stocată o expresie text într-o variabilă atunci când apăsați o tastă numerică? Care este scopul funcției parseFloat()? Sugerați o idee despre cum să efectuați mai multe operații aritmetice „la rând” fără a apăsa tasta „egal” între ele?

7. Programare orientată pe obiecte.

Dacă sunteți familiarizat cu programarea în limbaje precum Pascal sau Basic, atunci probabil ați observat că programarea în Flash este foarte diferită. Chestia este că Action Script este mai aproape nu de limbajele de programare procedurală, ci de cele orientate pe obiecte, precum Visual Basic sau Delphi.

Nu mă voi opri în detaliu asupra comparației acestor limbaje, mai ales că Action Script nu este un limbaj independent, trebuie să cunoaștem conceptele de bază. Vă rog să mă iertați imediat pentru o prezentare oarecum vagă a unui concept atât de fundamental precum programarea orientată pe obiecte (OOP), care se bazează pe concepte atât de dificile precum încapsularea și polimorfismul.

OOP se bazează pe modelul obiect al aplicației, în care toate obiectele sunt elemente ale unei anumite clase (Figura 16). Deci, aplicația Flash se bazează pe un film, constă din una sau mai multe scene. Scena conține obiecte grafice și de bibliotecă. Scena are și o linie temporală în care sunt situate cadrele. Cadrele cheie, simbolurile de clip și simbolurile butoanelor pot avea propriul cod Action Script.

În adevăratele limbaje orientate pe obiecte, fiecare element al modelului obiect poate fi accesat programatic. În Macromedia Flash, puteți accesa doar unele dintre aceste elemente în mod programatic, utilizând Action Script.

În general, Flash are capacitatea de a crea variabile obiect, dar acest lucru depășește domeniul de aplicare al cursului nostru opțional.

https://pandia.ru/text/78/159/images/image020_25.gif" width="612" height="420 src=">

Figura 16

Puteți vizualiza oricând modelul obiect al videoclipului dvs. specific folosind panoul plutitor „Explorator video”.

Figura 17 (arată un fragment al modelului obiect pentru proiectul anterior
calculator flash)

Obiectele mutabile au proprietăți, adică lucruri care pot fi modificate. De exemplu, un clip video are o proprietate de coordonate X Scriptul de acțiune are metode cu care putem schimba această proprietate. (și prin urmare creați animație software). Mai multe despre asta în capitolul următor.

Fiecare apel la codul de program este însoțit de un anumit eveniment, un astfel de eveniment ar putea fi apăsarea unui buton de pe ecran sau apăsarea unei taste de la tastatură.

Întrebări de revizuire:

Numiți limbaje de programare orientate pe obiecte. Ce elemente alcătuiesc modelul obiect Flash? Ce elemente puteți schimba programatic? Explicați semnificația termenilor obiect, proprietate, metodă, eveniment. La ce evenimente răspunde filmul Flash?

8. Schimbarea programatică a proprietăților.

Simbolurile bibliotecii de tip clip video pot avea proprietăți editabile. Aceasta înseamnă că puteți modifica în mod programatic dimensiunea, poziția sau vizibilitatea unui anumit obiect. Cum este implementat acest lucru?

Figura 17

Desenați un obiect, cum ar fi un dreptunghi.

Puneți-l în bibliotecă și trebuie să fie un videoclip;

În panoul plutitor „Copiere”, trebuie să specificați numele acestui obiect, de exemplu, zzz (Figura 17).

În panoul „Frame Actions”, selectați comanda Operations – Set Property. Această comandă are trei câmpuri personalizate. Proprietatea este proprietatea obiectului pe care dorim să o modificăm, de exemplu, _x (x Position), poziția obiectului de-a lungul axei X Target este numele copiei obiectului, în acest caz zzz. Valoare – cu ce este egală proprietatea selectată, acest câmp poate conține un anumit număr sau o expresie, dar în orice caz, nu uitați să verificați comutatorul „Expresie” (Figura 18).

Asta e tot, dacă rulezi proiectul, vei vedea că dreptunghiul tău s-a mutat și acum coordonatele centrului său va fi egală cu o sută.

Figura 18

Setul complet de proprietăți modificabile se află în fereastra „Proprietăți cadrului”, secțiunea Proprietăți, iar semnificația acestora poate fi găsită în literatură. Să ne uităm la principalele proprietăți, dintre care multe vom avea nevoie mai târziu în proiect:

Alpha – transparența obiectului, variază de la zero – transparență totală, până la 100 vizibilitate totală;

Vizibil este o proprietate foarte asemănătoare care înseamnă vizibilitate. Proprietatea are doar două valori – zero (obiectul este invizibil) și una (obiectul este complet vizibil);

Figura 19

Înălțime – înălțimea obiectului, măsurată în pixeli;

Lățimea – lățimea obiectului, măsurată în pixeli;

Rotație – rotația unui obiect față de centrul său, măsurată în grade;

Coordonata X – x;

Figura 20

Coordonata Y – y, coordonata colțului din stânga sus ia valoarea egală cu (0,0);

Xscale – schimbați scara de-a lungul axei x;

Yscale – schimbați scara de-a lungul axei y;.

După cum ați observat, toate proprietățile încep cu un caracter de subliniere.

Deoarece nu trebuie doar să schimbăm în mod programatic proprietățile unui obiect, ci și să urmărim valoarea lor curentă, avem nevoie de funcția GetProperty. Comanda este apelată în fereastra „Frame Actions” Functions – GetProperty() (Figura 19). Funcția are doi parametri. Țintă – țintă, în locul cuvântului țintă este scris numele unei copii a simbolului obiectului. Proprietate – o proprietate modificabilă în loc de proprietatea cuvântului, de exemplu, puteți scrie _x, obținând coordonata x curentă; Această funcție este utilizată, de regulă, împreună cu comanda pentru a seta o variabilă sau în interiorul unei alte comenzi (Figura 20).

x = getProperty(zzz, _x);

Această comandă înseamnă că coordonata curentă a obiectului, numită zzz, va fi stocată în variabila x.

Să vedem cum puteți utiliza modificarea proprietăților într-un proiect. Creați un obiect ale cărui proprietăți pot fi modificate. Un exemplu de ecran este prezentat în Figura 21.

Figura 21

Creați un obiect și transformați-l într-un simbol video.

Dați copiei acestui simbol un nume în panoul de copiere plutitor, cum ar fi „Ob”.

Creați un set de butoane. În principiu, setul de butoane poate fi arbitrar, proiectul folosește butoane care modifică coordonatele obiectului, precum și scara și transparența obiectului.

Adăugați următorul cod la butonul care mută obiectul în sus:

activat (eliberare, apăsați tasta " ") {

setProperty("Ob", _y,

getProperty(Ob, _y) - 5);

Această comandă schimbă proprietatea obiectului „Ob”, coordonata y. Pentru ca un obiect să se miște în sus, se calculează coordonatele curente și se scade 5 din el.

Alte butoane au cod similar, diferă doar în proprietatea pe care urmează să o modificați. Să luăm un alt exemplu:

setProperty("Ob", _xscale, getProperty(Ob, _xscale) + 5);

setProperty("Ob", _yscale, getProperty(Ob, _yscale) + 5);

Acest cod mărește scara obiectului. Pentru a crește proporțional, trebuie să măriți dimensiunea atât pe axa x, cât și pe axa y. Prin urmare, există două comenzi în acest script.

Întrebări de revizuire:

Ce simboluri de bibliotecă pot fi accesate programatic? Cum să organizezi asta? Ce proprietăți ale obiectelor ați studiat? Care este sensul lor? Care este diferența dintre comenzile setProperty și getProperty? Explicați semnificația liniei: setProperty("Ob", _xscale, getProperty(Ob, _xscale) + 5); Vă puteți imagina cum puteți schimba proprietățile altor obiecte, cum ar fi butoanele?

9. Cicluri cu trei cadre. Animație software.

Schimbarea programatică a proprietăților obiectului vă permite să creați animație programatică. Spre deosebire de animația standard, care poate fi creată în Macromedia Flash, animația software poate fi controlată pe măsură ce videoclipul progresează.

S-ar părea că este suficient să schimbați ciclic proprietățile unui obiect, de exemplu coordonata x, iar obiectul va începe să se miște, dar nu este așa. Faptul este că în Flash, codul programului este executat mai întâi și abia apoi are loc o schimbare, ecranul este redesenat. Prin urmare, obiectul va fi transferat imediat de la punctul de pornire la punctul final, iar mișcarea lină nu va funcționa. Depășirea acestei contradicții constă în utilizarea ciclurilor cu trei cadre.

Ideea lor este aceasta:

În primul cadru cheie sunt setate constantele inițiale și poziția inițială a obiectului.

În al doilea cadru cheie, proprietatea obiectului se modifică cu o anumită cantitate specificată.

Al treilea cadru cheie conține o singură comandă pentru a trece la al doilea cadru.

În ciuda faptului că ciclul nu este specificat în mod explicit, proprietățile se vor schimba ciclic. Efectuând o modificare a proprietății programatice în al doilea cadru, computerul va schimba poziția obiectului, iar al treilea cadru va bucla acest proces.

Să vedem cum este implementat în practică un ciclu cu trei cadre. Să creăm un videoclip în care mașina se mișcă de la o margine la alta a foii, întorcându-se în direcția opusă și continuând să se miște la nesfârșit. Utilizatorul are capacitatea de a-și schimba viteza de mișcare, încetinind-o sau mărind-o. Aspectul videoclipului, desigur fără mișcare, este prezentat în Figura 22. Mai jos va fi o analiză a codului programului pentru implementarea acestui proiect.

Figura 22

Creați un desen de mașină pe primul strat sau importați un desen gata făcut. Redenumiți stratul „mașină” și extindeți cadrul cheie la al treilea cadru apăsând tasta F5 în al treilea cadru.

Convertiți un desen într-un simbol, cum ar fi un clip video. Dați copiei acestui simbol un nume în panoul de copiere plutitor, cum ar fi „mașină”.

Creați un nou strat, redenumiți-l „butoane” și creați două butoane pe el „mai rapid” și „mai lent”.

Pe un nou strat Acțiuni, creați trei cadre cheie goale și apăsați F7 de trei ori.

În primul cadru cheie, adăugați următorul cod:

setProperty("mașină", ​​_x, 50);

Vă rugăm să rețineți că acest cod nu este cuprins între acolade și nu există nicio pornire (eliberare) la început, adică acest cod se referă în mod specific la cadru, nu la buton. În acest fragment, în prima linie a obiectului numit mașină, proprietatea _x (coordonată de-a lungul axei x) este setată la 50. În continuare, sunt introduse trei variabile, iată sensul lor: dx - valoarea unei singure mișcări a obiectul, precum și direcția de mișcare (vezi mai jos), MinX și MaxX sunt coordonatele minime și, respectiv, maxime posibile ale obiectului. În general, vă puteți descurca fără aceste variabile, dar utilizarea lor face mult mai ușor să vă depanați proiectul. Cred că o înțelegere mai profundă va apărea atunci când analizați codul suplimentar.

În al doilea cadru cheie, adăugați următorul cod:

x = getProperty(masina, _x);

' Variabila x stochează poziția curentă a obiectului.

dacă (x<=MaxX) {

setProperty("mașină", ​​_xscale, -100);

O construcție a două instrucțiuni condiționale imbricate. Primul verifică dx>0. Dacă da, atunci mașina se mișcă spre dreapta. A doua condiție x<=MaxX проверяет не достиг ли автомобиль максимально возможной координаты. Если это так то изменяется координата x объекта «car». Если второе условие не выполняется, то максимальная координата достигнута, как результат масштаб по координате х изменяется на -100% (автомобиль переворачивается) и единичного перемещение объект изменяется на противоположное.

dacă (x>=MinX) (

setProperty("masina", _x, x+dx);

setProperty("mașină", ​​_xscale, 100);

Din nou o construcție a două declarații condiționale imbricate. scopul lor este similar cu cele precedente.

În al treilea cadru cheie, adăugați următorul cod:

gotoAndPlay(2);

Dacă rulați proiectul acum, veți vedea că obiectul se mișcă la stânga și la dreapta. Să adăugăm un cod simplu care crește și scade viteza.

Pentru a schimba viteza, trebuie să creșteți cantitatea de mișcare unitară a obiectului. Codul corespunzător butonului „mai rapid” este prezentat mai jos:

activat (eliberare, apăsați tasta " ") {

Dacă o mișcare a unității este pozitivă, atunci apăsarea butonului crește această mișcare cu unu. Vă rugăm să rețineți că aceeași acțiune va avea loc dacă apăsați butonul „dreapta” de pe tastatură.

Codul corespunzător butonului „mai lent” este prezentat mai jos:

activat (eliberare, apăsați tasta " ") {

Scopul este similar cu fragmentul anterior. Asta e tot. Lansați proiectul, testați-l. Vom aplica cunoștințele acumulate în ultimul proiect, care le va combina pe cele două precedente și va crea un joc.

Întrebări de revizuire:

De ce nu poate fi implementată animația software folosind o buclă obișnuită „while”? Explicați scopul fiecărui cadru într-un ciclu de trei cadre. Explicați semnificația variabilei dx în proiectul descris. De ce se află linia setProperty ("mașină", ​​_xscale, 100); Adăugați un buton „stop” la proiectul creat.

10. Proiect „Joc interactiv – Poligon de tragere”.

Scopul proiectului: creați un joc interactiv cu galerie de împușcături. Un iepure (țintă) va fi amestecat pe terenul de joc, care trebuie lovit folosind o țintă în mișcare. Lovirea trebuie făcută într-un număr minim de pași (calculat). O vedere aproximativă a ecranului este prezentată în Figura 23.

Pentru a implementa acest proiect, trebuie să creați un obiect țintă (în acest caz, un desen importat al unui iepure). Ar trebui să se miște în același mod ca mașina din proiectul anterior. De asemenea, trebuie să creați un obiect țintă și un set de butoane care mișcă acest obiect stânga-dreapta și sus-jos. De asemenea, trebuie să creați șase câmpuri dinamice de ieșire. Două pentru afișarea coordonatelor țintei, două pentru afișarea coordonatelor țintei, unul pentru afișarea rezultatului și unul pentru numărarea numărului de încercări.

În principiu, acesta este același ciclu cu trei cadre. În primul cadru setăm parametrii inițiali:

z_x = aleatoriu(450)+50;

z_y = aleatoriu(230) + 50;

pr_x = getProperty(pr, _x);

pr_y = getProperty(pr, _y);

setProperty("z", _x, z_x);

setProperty("z", _y, z_y);

setProperty("buh", _vizibil, 0);

d – precizia loviturilor (mai multe despre această variabilă mai târziu); h – un singur pas de mișcare a „iepurilor”; rez – numărul de repetări, inițial această variabilă este egală cu zero; z-x și z-y sunt coordonatele inițiale ale „iepurii”, acestea sunt setate folosind funcția standard Random, este numită folosind comanda Objects – Mathematics – Random din fereastra Frame Actions; apoi proprietățile țintei (obiectul „z”) sunt setate la coordonatele aleatoare obținute; iar în final, în ultima linie, vizibilitatea „împuşcăturii” este setată la zero, adică, deocamdată, obiectul „buh” este invizibil.

Figura 23

Și mai jos este codul corespunzător celui de-al doilea cadru cheie:

z_x = getProperty(z, _x);

dacă (z_x>=max_x) (

setProperty("z", _xscale, -50);

dacă (z_x<=min_x) {

setProperty("z", _xscale, 50);

setProperty("z", _x, z_x+h);

totul repetă exact codul similar al celui de-al doilea cadru din sarcina anterioară.

Al treilea cadru conține o singură comandă:

gotoAndPlay(2);

vă permite să „încercați” mișcarea țintei.

Adăugați cod pentru butoanele care mută ținta la stânga și la dreapta, în sus și în jos. De exemplu, iată codul pentru a muta ținta la dreapta:

activat (eliberare, apăsați tasta " ") {

pr_x = getProperty(pr, _x);

setProperty("pr", _x, pr_x + 10);

pr_x = getProperty(pr, _x);

în acest fragment comanda pr_x = getProperty (pr, _x) se repetă de două ori, aceasta nu este o eroare. Doar că prima dată este nevoie de această comandă pentru a determina poziția țintei înainte de deplasare, iar a doua oară avem nevoie de o nouă coordonată a țintei pentru a o compara cu coordonata țintei la tragere.

Tot ce rămâne este să adăugați codul pentru butonul de foc. Este prezentat mai jos:

activat (eliberare, apăsați tasta " ") {

‘ Indiferent de eficacitatea loviturii, variabila rez crește cu unu.

setProperty("buh", _x, pr_x);

setProperty("buh", _y, pr_y);

setProperty("buh", _vizibil, 1);

' Simbolul care simulează o „împușcătură” se deplasează la coordonatele unde se află în prezent ținta și vizibilitatea acesteia devine egală cu unu.

tellTarget("buh") (

gotoAndPlay(2);

În proiect, o „împușcătură” este un clip în care apare un cerc roșu. Pentru a preveni ca acest lucru să se întâmple tot timpul, comanda stop() este utilizată în primul și ultimul cadru al clipului. Comanda TellTarget spune computerului că următoarele comenzi din săgețile ondulate se aplică numai obiectului „buh” și sunt executate în acesta. Prin trecerea la al doilea cadru, începe animația din interiorul clipului „buh”.

dacă (abs matematică (pr_x - z_x)

text = „Exact la țintă!”;

„ În ce caz ar trebui să presupunem că am lovit ținta - dacă diferența dintre coordonatele țintei și țintei este mai mică decât precizia lovirii (variabila d în primul cadru). Ideea este că ambele condiții sunt îndeplinite simultan pentru coordonatele x și y, deci se folosește conjunctivul logic AND (vezi lecția 4). Și în sfârșit, trebuie să comparăm modulul diferenței de coordonate în acest scop se folosește funcția matematică standard; abs(). Dacă toate condițiile sunt îndeplinite, câmpul dinamic „text” capătă valoarea „Exact la țintă!” iar videoclipul se oprește.

text = „trecut!”;

Asta e tot. Proiectul rulează, ținta fuge de noi, iar câmpurile de text urmăresc poziția sa. Ținta se deplasează pe câmp și rezultatele sunt afișate pe ecran. Vă puteți felicita, am ajuns până la capăt.

Întrebări de revizuire:

Ce tehnologii au fost folosite în acest proiect? Care este scopul comenzii tellTarget("buh")? Ce trebuie schimbat în program pentru a reduce câmpul de mișcare al iepurelui cu 100 de pixeli? De ce, când comparăm coordonatele țintă și coordonatele țintă, ar trebui să calculăm modulul datelor de coordonate? Cum este implementat acest lucru în Flash? Oferă opțiuni care complică jocul, sugerează modalități de implementare a acestora.

Tocmai am atins despre programarea în Flash. Probleme precum lucrul cu matrice au rămas neatinse; nu am lucrat cu câmpuri de sunet sau text derulabil; Există încă multe secrete și surprize în Flash explorarea lor este o chestiune separată. Poate că autorul va găsi timp să descrie aceste aspecte interesante.

Dacă v-au interesat aceste prime lecții, dacă v-ați interesat programarea în Flash, atunci aceste câteva nopți pe care le-am descris primii pași în minunatul program Macromedia Flash nu au fost în zadar. Ma puteti contacta prin E-mail, sa va exprimati dorintele si comentariile, sa puneti intrebari, dar in orice caz, va multumesc ca ati citit acest text.

Pentru obtinerea. exe, trebuie să creați un film Flash în programul Macromedia Flash, să îl publicați (meniu dosar – publicare). Ca urmare, aveți un fișier cu extensia . swf, îl puteți vizualiza fie folosind programul Flash Player (instalat automat la instalarea Macromedia Flash. Deschideți fișierul care apare, selectați meniul fișier – crearea unui proiector, setează-ți numele. fișier exe.

În ciuda faptului că vedeți un dreptunghi, ca în imagine, acesta este un chenar atunci când introduceți text, acesta va rămâne, dar în videoclip în sine nu va fi vizibil.

Cel mai probabil, atunci când încercați să introduceți text cu litere rusești, „abracadabra” va apărea pe ecran. Acest lucru se datorează faptului că fontul implicit din programul Flash este Times New Roman, care nu conține o descriere a caracterelor chirilice. Prin urmare, înainte de a tasta, instalați un font care acceptă chirilic, de exemplu, Times New Roman Cyr sau Arial Cyr.

Dacă citiți versiunea electronică a acestui manual, atunci puteți copia acest fragment și apoi îl puteți lipi prin clipboard în fereastra de acțiune a cadrului.

În cea de-a patra versiune de Macromedia Flash, s-a impus o limită de 20.000 de repetări dacă ai încercat să efectuezi un număr mai mare de cicluri, computerul a oprit executarea codului pentru a evita înghețarea. Începând cu cea de-a cincea versiune, restricția a fost eliminată, computerul afișează doar un mesaj că programul încetinește și vă oferă posibilitatea de a închide singur programul.

Pentru a adăuga un nou cadru cheie, faceți clic pe cadrul #2 din stratul de acțiune și apăsați F7. Flash va crea un nou cadru cheie gol.

Pentru a importa o imagine, selectați comanda Fișier – Import din alte formate. Aveți grijă dacă folderul specificat conține fișiere cu același nume, de exemplu. masina1? car2 etc., atunci computerul va oferi să le importe pe toate deodată. Dacă importați un desen vectorial, acesta va ajunge pe pânză ca o colecție de obiecte grupate. Nu uitați să-l grupați într-un singur întreg. Dacă importați un bitmap, acesta este plasat automat în bibliotecă și vedem o copie a acestuia pe scenă.

Fiecare dezvoltator independent debutant se confruntă cu întrebări logice: „pe ce să scrieți?”, „De ce să scrieți?” și „ce instrumente să folosești?”. În continuare, voi încerca să evidențiez toate aceste probleme în lumina platformei Adobe Flash.

Să ne uităm la numărul de postări și subiecte create de el și de mine. De exemplu, iată primele două postări din subiectul HTTP://FORUM.ALTERNATIVAPLATFORM.COM/POSTS/LIST/8657.PAGE

Daca vrei neaparat, poti sa scrii un mesaj personal mie si lui pe acelasi forum.

Platforma Adobe® Flash® este un set integrat de tehnologii pentru programarea aplicațiilor, susținut de un ecosistem stabil de programe de asistență, parteneri de afaceri și comunități de utilizatori. Împreună, vă pot oferi tot ce aveți nevoie pentru a crea și a distribui aplicații dinamice, conținut și videoclipuri către cel mai larg public posibil.

Avantajele flash includ:

  • Multiplatformă - Aplicațiile flash rulează în trei medii principale: flash player, AIR și shockwave player (încorporat și actualizat automat în browserul Google Chrome). Toate cele trei medii sunt acceptate pe Windows, Mac OS și Linux, precum și pe multe dispozitive portabile, oferind cea mai mare versatilitate multi-platformă a oricărui timp de rulare multimedia;
  • Reziliență și sprijin - spre deosebire de multe sursa deschisa motoarele și mediile de joc, flash-ul în sine este un proiect comercial uriaș și sute și mii de dezvoltatori lucrează la platformă. Actualizări regulate ale componentelor, capabilități extinse, un număr extrem de mic de erori în platforma în sine (de fapt, aproape că nu există) și suportul pentru dezvoltatori de la Adobe Corporation merită respect;
  • Script de acțiune 3 - un limbaj de programare la nivel înalt, orientat pe obiecte, care are un număr mare de capabilități, de la lucrul cu text și grafice simple, până la gestionarea conexiunilor de rețea și lucrul direct cu procesorul plăcii video folosind limbajul integrat Adobe Graphics Assembly Language;
  • Trusa de instrumente - Pentru flash, pe toată perioada existenței sale, au apărut multe IDE-uri terțe, biblioteci de funcții și motoare cu drepturi depline, despre care vom vorbi astăzi.

Selectarea unui mediu de dezvoltare (IDE)

Există trei IDE-uri principale pentru dezvoltarea aplicațiilor Flash: Adobe Flash Professional, Abode Flash Builder și mediul open source gratuit Flash Develop. Să trecem pe scurt prin listă.

Adobe Flash Professional - indiferent ce spun ei, acesta este în primul rând un instrument de dezvoltare vizuală și nu este foarte confortabil pentru un programator să lucreze în el. În acest mediu, este mult mai ușor să creezi un videoclip interactiv (nu neapărat) decât o aplicație cu drepturi depline, cu atât mai puțin un joc, motiv pentru care este mai potrivit pentru designeri decât pentru dezvoltatori.

Adobe Flash Builder - Adobe Corporation a creat acest IDE special pentru dezvoltatori, destinat în primul rând programatorilor. Convenabil, simplu, de încredere, scump. Costa ~1000$.

Dezvoltare Flash - alegerea majorității dezvoltatorilor (inclusiv a mea personală). Imaginați-vă un Flash Builder gratuit cu funcții suplimentare, acesta este Flash Develop.

Cu toate acestea, limbajul de programare și platforma pentru toate IDE-urile sunt aceleași, astfel încât proiectul poate fi întotdeauna transferat de la o platformă la alta.

TEHNOLOGII

Flash Player/Shockwave Player - Cea mai recentă versiune (11) a jucătorului a dobândit suport pentru tehnologia Molehill, de ex. accelerare grafică hardware. Acum dezvoltatorii pot folosi liber resursele plăcii video, eliberând CPU de această povară grea. Puteți citi mai multe despre Molehill în această traducere a cărții. Pentru dezvoltatori, există o versiune independentă a playerului din care să aleagă: Debag (cu capacități mai mari de depanare) și Release. Puteți vizualiza lista de episoade și puteți descărca playerul dorit

Adobe AIR - De obicei vedem aplicațiile Flash doar în browser. După instalarea AIR pe computer, puteți instala aplicații AIR create special, care au capabilități avansate în comparație cu flash-ul obișnuit al browserului.

Script de acțiune 3 - Personal, am învățat-o în aproximativ o lună, având în vedere că înainte lucrasem doar în Delphi 7 și PHP. Pentru aceasta vreau să îi mulțumesc în special lui Adobe, pentru că nu am mai văzut de foarte mult timp un manual atât de excelent despre un limbaj de programare. Și un director online atât de complet. Aș dori să remarc că atât manualul, cât și cartea de referință sunt în întregime în limba rusă.

MOTOARE

As vrea sa va vorbesc despre doua motoare pe care le-am folosit si pe care vi le pot recomanda. Asa de:

FlashPunk - este o bibliotecă de clasă gratuită scrisă în ActionScript 3și destinat dezvoltării 2D jocuri flash. Vă va fi mai ușor să creați prototipuri și să vă dezvoltați jocul. Aceasta înseamnă că cea mai mare parte a lucrărilor murdare (actualizări ale buclei de joc, animații, manipulare a plăcilor, calcule de coliziuni etc.) este făcută pentru tine și gata de utilizare. Acest lucru vă va economisi cea mai mare parte din timp și energie și vă va permite să vă concentrați pe proiectarea și testarea jocului. (Cu) redefidează



Space Invaders pe Flash Punk


Personal de la mine - recomand cu caldura. Motorul este destinat exclusiv dezvoltării de jocuri și cunoștințele de bază despre Action Script 3 sunt suficiente pentru a-l folosi.

Lecții despre motor pot fi găsite în această secțiune a blogului, unde sunt adunate multe lecții (elementele de bază sunt chiar în partea de jos a paginii).

Platforma Alternativa

Editor Ogmo

Ogmo Editor este un editor vizual de nivel 2D pentru dezvoltatorii de jocuri independenți. Aceasta este o aplicație Adobe® AIR™ și este multiplatformă, care rulează pe Windows, OS X și Linux.

Ogmo Editor funcționează cu XML, astfel încât fișierele sale de ieșire pot fi utilizate în orice motor modern. Puteți citi lecția pe OE

Flash - Folosind ActionScript 3.0

Platforma Adobe Flash este baza pentru dezvoltarea de aplicații web interactive bogate, prezentări și interfețe cu utilizatorul. Aplicația Flash permite dezvoltatorilor și designerilor să folosească grafică, text, audio și video.

În ultimii ani, cele mai populare browsere au încercat să scape de Flash în favoarea capabilităților HTML5. De exemplu, în cele mai recente versiuni de Google Chrome Plugin Adobe Flash Player este oprit implicit și pe site-urile care folosesc Flash trebuie să îl activați manual. Multe servicii video populare, cum ar fi YouTube, au abandonat și Flash în favoarea HTML5. Cu toate acestea, jocurile flash sunt încă deosebit de populare, unde capacitățile HTML5 sunt încă semnificativ inferioare.

Flash are două fețe: cea pe care o vedeți pe ecran și un motor complex de scripting numit ActionScript, pe care nu o vezi. Ca limbaj de scripting integrat în Flash, ActionScript vă permite să creați experiențe interactive. Orice film în care trebuie să faceți clic, să trageți sau să întrerupeți ceva necesită utilizarea ActionScript, care spune Flash ce trebuie să facă. ActionScript este baza pentru întreaga interactivitate și logica încorporate în Flash.

Lansarea Flash CS3 a introdus ActionScript 3.0, un limbaj de scripting mult îmbunătățit. Versiunile mai vechi de ActionScript au fost lente în a executa scripturi mari și complexe. ActionScript 3.0 a schimbat asta. Este de aproape 10 ori mai rapid decât ActionScript 2.0 și are mult mai multe funcționalități.

ActionScript 3.0 a adoptat o adevărată abordare de dezvoltare orientată pe obiecte care permite aplicațiilor Flash să concureze cu soluțiile dezvoltate folosind Microsoft .NET (Silverlight) sau Java. ActionScript 3.0 îmbunătățește considerabil ceea ce se poate realiza prin creșterea vitezei Flash Player 9 și 10. Cu ActionScript 3.0 și Flash Player 10.1 și versiunile ulterioare, puteți crea aplicații pentru majoritatea computerelor desktop, dispozitivelor și sistemelor. ActionScript 3.0 este în prezent limbajul de scripting implicit în Flash CS5 și în versiunile ulterioare.

În acest articol, veți afla de ce ActionScript 3.0 este limbajul de programare pe care veți dori să începeți să îl utilizați, ce s-a schimbat față de versiunile anterioare de ActionScript, ce a rămas neschimbat și cum să facem aplicațiile noastre și mai puternice. Singura problemă pe care va trebui să o rezolvi este să alegi ce să dezvolți mai întâi.

Utilizarea programarii orientate pe obiecte în ActionScript

Obiecte sunt cheia înțelegerii programare orientată pe obiecte (OOP). În OOP, un obiect este la fel de real ca un obiect obișnuit din lumea noastră. De exemplu, un câine sau chiar un computer sunt obiecte care există în lumea reală. Obiectele din lumea reală sunt similare cu obiectele din lumea computerelor din două puncte de vedere: au o anumită stare și comportament. De exemplu, starea unui câine poate fi descrisă prin proprietăți precum numele, culoarea, rasa și dacă îi este foame. Comportamentul câinelui va fi lătrat, căutând atenție și dând din coadă.

Obiectele computerizate sunt modelate după obiecte din lumea reală în termeni de stări și comportamente specifice. Clasă este o reprezentare a unui obiect care stochează informații despre tipul de date, starea și comportamentul acestuia. O clasă poate include trei tipuri de caracteristici: proprietăți, metode și evenimente. Proprietăți reprezintă diverse date asociate unui obiect. Metodeînseamnă acțiuni care pot fi efectuate asupra unui obiect. Eveniment este o acțiune a unui sistem, aplicație sau utilizator (de exemplu, un clic de mouse care provoacă o acțiune asociată cu un obiect).

După crearea unei clase, puteți crea clase pe baza celei existente, care sunt numite subclasele, sau extensii de clasă. Subclasa moștenește toate proprietățile și metodele clasei părinte, care, la rândul lor, vor fi apelate superclasă. De exemplu, puteți crea o superclasă Parent și o subclasă Copii. Moștenirea permite unei definiții de clasă (subclasă) să includă toate caracteristicile unei alte definiții de clasă (superclasă). De asemenea, puteți crea metode și proprietăți suplimentare ale subclasei, precum și metode de înlocuire moștenite de la superclasă, care se numește polimorfism.

Moștenirea și subclasarea sunt foarte utile pentru proiecte mari în care vă puteți partaja funcționalitatea și puteți reduce cantitatea de cod.

Un obiect își menține starea folosind una sau mai multe variabile. Variabil este un element de date numit printr-un anumit identificator. Tot ceea ce un obiect înțelege (starea sa) și poate face (comportamentul) este exprimat prin variabilele și metodele din acel obiect.

Un obiect care reprezintă o mașină în mișcare va avea variabile care reflectă viteza, direcția și culoarea acestuia, așa cum se arată în imaginea de mai jos. Aceste variabile sunt cunoscute ca variabile de instanta, deoarece conțin stările unui anumit obiect, iar în terminologia orientată pe obiecte, un anumit obiect se numește instanță. Pe lângă propriile variabile, mașina va avea metode responsabile cu schimbarea vitezei și aprinderea farurilor. Aceste metode sunt numite metode de instanță deoarece verifică sau schimbă starea unei anumite instanțe.

Configurarea Flash pentru motorul AVM 2.0

Flash Player- un plugin care este instalat în browserul dvs. web pentru a reda fișiere SWF este cheia succesului atunci când creați aplicații rapide. Pentru a compila și apoi a rula orice cod ActionScript din filme, Flash Player folosește un instrument numit Mașină virtuală ActionScript (Mașină virtuală ActionScript) sau AVM. Pentru ActionScript 1.0 și 2.0, Flash Player utilizează AVM 1.0. Flash Player 9 a introdus noua versiune AVM 2.0, care este folosită pentru a funcționa numai cu fișiere SWF ActionScript 3.0. Este destul de ușor de stăpânit.

Folosind AVM 2.0. puteți crea aplicații care au viteza și complexitatea aplicațiilor desktop tradiționale. Exemple de astfel de aplicații includ Adobe WorkFlow Lab, un instrument care vă permite să dezvoltați aplicații compozite Workflow și care concurează direct cu instrumentul Microsoft Visio; Adobe Story, un instrument care vă permite să creați scripturi pentru producții multimedia și video și Kuler, un instrument sofisticat de gestionare a culorilor. Utilizarea acestor instrumente oferă același răspuns ca aplicațiile desktop tradiționale.

Dezvoltarea de soluții în ActionScript 3.0 care vizează motorul AVM 2.0 vă asigură că vă optimizați semnificativ experiența Flash.

Flash Player 9 acceptă AVM 1.0 pentru compatibilitate cu conținutul existent și vechi. Flash Player 7 și 8 acceptă numai AVM 1.0. Cu toate acestea, există câteva probleme de compatibilitate de care ar trebui să fii conștient. Un fișier SWF nu poate combina ActionScript 1.0 sau 2.0 cu codul versiunea 3.0, iar codul poate încărca un fișier SWF cu versiunile 1.0 sau 2.0, dar nu poate accesa variabilele și funcțiile fișierului (cu excepția capacității de a utiliza comanda loadMovieNum().și treceți parametrul de nivel). Dacă aveți cod versiunea 1.0 sau 2.0 și doriți să utilizați codul versiunea 3.0, trebuie să convertiți tot codul vechi în ActionScript 3.0. Dacă doriți să utilizați comportamente, trebuie să apelați la ActionScript 2.0, deoarece comportamentele nu sunt disponibile pentru 3.0.

Mașini virtuale și JavaScript

Browserele web folosesc mașini virtuale pentru a rula JavaScript, care este vărul lui ActionScript. Ambele tehnologii se bazează pe format internațional ECMA-262, sau ECMAScript, așa cum este adesea numit. Browsere precum Google Chrome, Safari, FireFox și Internet Explorer folosesc mașini virtuale JavaScript ( Mașini virtuale JavaScript - JVM) pentru a reda conținut.

Multe dintre companiile care creează motoare de browser le dau nume pline de culoare: V8 pentru Google Chrome, SquirrelFish pentru Safari și SpiderMonkey pentru FireFox. Dar câștigătorul cu nume originale, desigur, poate fi acordat Microsoft - inspirația sa creativă a fost limitată la numele mașinii sale virtuale JS (pentru JavaScript).

Desigur, AVM 2.0 de la Adobe ocupă locul doi aici. Există vreo șansă ca Adobe să dea în continuare AVM 3.0 un nume atractiv?)

Folosind ActionScript 3.0

ActionScript 3.0 a suferit modificări semnificative în comparație cu versiunile anterioare. Acest lucru nu înseamnă că, dacă ați lucrat cu ActionScript 1.0 sau 2.0, veți avea dificultăți. Doar că învățarea de noi moduri de a folosi codul va dura timp.

Înțelegerea ActionScript 3.0

ActionScript 3.0 este un model de programare robust (complet actualizat cu cea mai recentă versiune a standardului ECMAScript) care este familiar dezvoltatorilor cu cunoștințe de bază OOP. Dacă ați folosit deja alte limbaje de programare, cum ar fi Java, C++ sau C#, atunci ar trebui să știți ce înseamnă acest termen.

Programarea orientată pe obiecte vă permite să divizați codul în obiecte care pot fi reutilizate cu ușurință. Folosind OOP, este mai ușor să gestionați o aplicație care constă dintr-o colecție întreagă de fișiere mici, mai degrabă decât dintr-un fișier mare.

Să ne uităm la principalele schimbări cu care va dura ceva timp să ne obișnuim:

    ActionScript se află în fișierele de clasă sau în cronologia.

    Designul codului este cu adevărat orientat pe obiecte.

    Nu puteți adăuga ActionScript direct la clipuri video sau la instanțele de buton.

    Declanșarea evenimentului a suferit modificări.

    XML este tratat diferit.

În plus, utilizarea adăugată a informațiilor despre tipul de rulare, utilizarea îmbunătățită a proprietăților și claselor izolate, utilizarea adăugată a unei metode de închidere pentru gestionarea evenimentelor, a inclus standardul ECMAScript pentru XML, suport îmbunătățit pentru expresiile regulate și a adăugat tipuri primitive (de exemplu, int - un tip întreg).

Lucrul cu ActionScript 3.0

Există două moduri de a lucra cu ActionScript. Primul este să adăugați ActionScript la cronologia. Acest lucru va fi familiar dezvoltatorilor Flash de multă vreme. Este recomandat să aveți un strat în această cronologie dedicat doar lucrului cu ActionScript. Adobe recomandă etichetarea acestuia ca acțiuni. Blocarea acestui strat va împiedica adăugarea accidentală a clipurilor de film la el.

A doua metodă este să inserați ActionScript în fișiere Flash cu un fișier Class. Fișierele de clasă au o istorie lungă în lumea dezvoltării. Cu ajutorul lor, puteți specifica atât cursuri publice, cât și private. Cuvânt cheie Privat restricționează utilizarea unui atribut definit doar în acea clasă și care nu este partajat cu alte clase. Acest lucru este util atunci când dezvoltați instrucțiuni care trebuie completate într-un spațiu separat, în mod privat.

Alte modificări importante sunt enumerate mai jos:

    Dezvoltarea de soluții de construcție cu modelul de eveniment DOM 3.

    Utilizarea spațiilor de nume în proiectele dvs.

    Management de date.

    Gestionarea textelor.

    Desenați folosind clasa Shape.

    Abilitatea de a lucra cu ușurință cu biblioteci externe ActionScript.

Asemănări între ActionScript 2.0 și 3.0

În ciuda tuturor modificărilor din ActionScript 3.0 comparativ cu 2.0, este important să ne amintim că există o mulțime de funcționalități care sunt aceleași în ambele versiuni. De exemplu, puteți utiliza în continuare următoarele elemente în același mod: variabile, obiect Math, instrucțiuni if/else, instrucțiuni switch, șiruri de caractere, date, matrice și boolean.

Următorul cod funcționează atât în ​​ActionScript 2.0, cât și în 3.0:

Var str1:String = new String ("Bună ziua, "); var str2:String = new String("lume"); urmă(str1 + str2);

După cum puteți vedea, structura generală de sintaxă este aceeași în ambele versiuni de ActionScript. Codul se termină cu o acoladă, numele variabilelor sunt sensibile la majuscule și nu pot începe cu un număr, obiectele de clasă sunt folosite la fel.

Extinderea ActionScript cu biblioteci deschise

Nucleul ActionScript 3.0 este că poate fi extins cu ușurință. Pentru a face acest lucru, puteți folosi zeci de biblioteci mari open-source care extind funcționalitatea Flash. Exemple demne sunt:

    Box2D Physics Engine;

    CoreLib – o colecție de utilități de bază, cum ar fi hashing MD5, serializare JSON și analiza avansată a datelor;

    Syndication Library – o bibliotecă care vă permite să analizați cu ușurință fluxurile de bază ATOM și RSS;

    Alive PDF este o bibliotecă care vă permite să convertiți conținutul ecranului din Flash în format PDF.

Ultimul articol a fost dedicat animației. Am creat animație bazată pe interpolarea mișcării, interpolarea formei și pur și simplu compunerea mișcării din cadre individuale. Cred că este timpul să trecem la un subiect mai avansat, privind instrumentul care creează baza pentru majoritatea filmelor Flash de calitate.

Acest instrument este ActionScript, un limbaj bazat pe evenimente încorporat în Flash. Cea mai recentă versiune de ActionScript (care este prezentă în Flash 5) este semnificativ diferită de ActionScript care a fost în Flash 4. Dacă în versiunea anterioară era un set limitat de comenzi, permițând doar acțiuni de bază, și intrat folosind o interfață nu foarte ușor de utilizat, atunci noul ActionScript este un limbaj puternic, cu un set crescut de comenzi, suport pentru clase, moștenire (!), și interfață mult mai convenabilă.

ActionScript face paginile dvs. interactive. Puteți reacționa la evenimente de pe mouse sau tastatură și puteți efectua orice acțiuni atunci când redați un anumit cadru.

Pentru a stăpâni pe deplin ActionScript, este recomandabil să aveți deja experiență în programare (de preferință în C++, JavaScript etc.). Cu toate acestea, unul dintre avantajele limbajului Flash este că nu trebuie să fii un profesionist Flash sau să fii pe deplin familiarizat cu ActionScript pentru a scrie cod de calitate în el. Puteți utiliza acele caracteristici lingvistice pe care le considerați necesare pentru munca dvs.

Deoarece acest articol este despre elementele de bază ale limbii, în el vom acoperi:

  • Panoul Acțiuni este locul în care are loc aproape toată comunicarea cu ActionScript.
  • Butoane - cum să le facem să funcționeze așa cum ne solicităm.
  • Căi - cum să accesezi obiectele necesare?
  • Acțiuni de bază cu desene animate Flash (clipuri de film) - vom controla procesul de redare a filmului după bunul plac.
  • Depanare în ActionScript - Ferestrele de ieșire și de depanare.

Scopul acestui articol este de a vă oferi o idee despre ActionScript, pentru a arăta că acest limbaj poate fi folosit atât pentru a crea programe foarte impresionante, cât și pentru a efectua acțiuni de bază care vă vor face pagina mult mai atractivă.

Termeni

Înainte de a intra în acțiuni specifice, câțiva termeni ActionScript:

  • Acțiuni- acestea sunt instrucțiuni care îi spun desenului animat Flash ce trebuie să facă. De la ele vine numele limbajului - ActionScript (literalmente - script de acțiune). Să fim de acord că, în cadrul acestui articol, vom folosi termenul „instrucțiuni” pentru a nu fi confundați cu acțiunile efective pe care le vom efectua.
  • Evenimente- acestea sunt acțiunile care au loc atunci când se joacă desenul animat. Evenimentele, de exemplu, pot apărea atunci când încărcarea unui anumit cadru se termină, când ajungem la un anumit cadru, când utilizatorul apasă o tastă de pe tastatură sau cursorul mouse-ului este peste obiectul nostru.
  • Expresii este orice parte a unei instrucțiuni care produce o valoare. Următoarele exemple sunt expresii: 2 + 2, 2 * 2, a + b, 2*pi*r, (15 + k) * aleatoriu(10).
  • Funcții este un bloc de cod care poate fi reutilizat. Puteți transmite valori unei funcții și puteți primi un rezultat returnat de la aceasta. De exemplu, număr = obține_culoare(15, 24). 15 și 24 sunt argumente (sau parametri) pentru funcția get_color, a cărei valoare returnată este scrisă în variabila număr.
  • Clase sunt tipuri de obiecte. De exemplu, clasa de copac este plante. Flash are un număr de clase predefinite (la fel ca clasele JavaScript). Puteți să vă creați propriile clase sau să le modificați pe cele existente.
  • Instanțe sunt literalmente exemple ale anumitor clase. De exemplu, o plantă poate fi un copac, un tufiș sau o floare. O instanță este deja un obiect real specific. Dacă o clasă este o definiție a unui obiect (instanță), atunci o instanță este deja o concretizare concretă, este o clasă în acțiune. Fiecare instanță poate primi un nume, astfel încât funcțiile sau variabilele obiectului să poată fi accesate prin intermediul acesteia.
  • Manipulatorii sunt instrucțiuni speciale care procesează evenimente. De exemplu onClipEvent- un handler pentru acțiuni asociate cu un simbol specific (vezi).
  • Operatori sunt elemente de limbaj care calculează valori pe baza unuia sau mai multor argumente. De exemplu, operatorul de adăugare (+) returnează suma celor două valori la stânga și la dreapta acestuia.
  • Variabile sunt identificatori care pot stoca valori. De exemplu, a = 5; sau nume = „Michael”.

Aceștia sunt termenii pe care îi vom folosi când discutăm despre ActionScript. Asa de…

Panoul de acțiuni

Bara de acțiuni este utilizată pentru a afișa și introduce programe ActionScript (Fig. 1). Există două moduri de funcționare cu panoul - normal (pentru manechin) și expert. În modul expert, lista de comenzi este un câmp simplu de introducere a textului. În modul normal, nu putem edita direct comenzile. Pentru a face acest lucru, utilizați panoul de opțiuni.

Puteți adăuga o instrucțiune făcând clic pe butonul „+” (vezi Fig. 1) sau selectând instrucțiunea corespunzătoare din lista de elemente de limbă. În plus, pentru toate acțiunile din Flash există secvențe de taste care pot fi folosite pentru a face acest lucru mult mai rapid. Acestea sunt afișate în dreapta fiecărei acțiuni în meniul butonului „+”. De exemplu, pentru a adăuga o funcție Stop(), trebuie să apăsați Esc+st (secvențial: Esc, apoi „s”, apoi „t”).

Puteți șterge o instrucțiune selectând-o și apăsând butonul „-” (sau pur și simplu tasta Ștergere).

Vă recomand să nu începeți imediat să utilizați modul expert dacă nu aveți experiență în programare în limbaje asemănătoare Java (C++, Java, JavaScript). Modul normal are un mare avantaj care îl face indispensabil pentru începători - există mult mai puține șanse de a face greșeli cu sintaxa limbajului. Acest lucru îi va ajuta pe începători să înțeleagă rapid complexitățile ActionScript.


Orez. 1 - Bara de acțiuni

Panoul de acțiuni afișează acțiunile obiectului sau cadrului selectat curent.

Butoane

Primul lucru pe care ți-l dorești atunci când începi să înveți interactivitatea Flash este să faci ceva care să răspundă la acțiunile utilizatorului, să-ți „reînvie” creația, să adaugi feedback. Cel mai simplu mod de a face acest lucru este cu butoanele. Prin urmare, vom începe cu ei.

După cum știți, în Flash există un tip special de simbol pentru crearea butoanelor - Buton (vezi). Să presupunem că ați învățat deja cum să creați butoane, acum să învățăm cum să urmărim clicurile pe aceste butoane.

Butoanele din Macromedia Flash au o listă extinsă de evenimente la care putem răspunde:

  • presa- butonul mouse-ului este apăsat când cursorul se află în interiorul butonului;
  • eliberare- butonul mouse-ului este eliberat când cursorul se află în interiorul butonului;
  • eliberarea Afară- butonul mouse-ului este eliberat când cursorul este în afara butonului;
  • rostogoli- cursorul mouse-ului intră pe buton;
  • rola- cursorul trece dincolo de buton;
  • trage peste- cursorul intră în limitele butonului, în timp ce butonul a fost apăsat și a fost apăsată tasta mouse-ului;
  • trage- cursorul trece dincolo de buton, în timp ce butonul a fost apăsat și tasta mouse-ului a fost apăsată;
  • Apăsați tasta("tasta") - o "tasta" a fost apăsată. Puteți vizualiza o listă de taste în ajutorul Flash (obiect Cheie) sau puteți utiliza bara de opțiuni pentru a introduce cheia dorită.

Din păcate, Flash „înțelege” doar butonul stâng al mouse-ului. Cel din dreapta este folosit pentru a apela meniul contextual (clic dreapta pe un desen animat Flash). Încă nu am întâlnit modalități de a prinde tasta din mijloc sau roata mouse-ului în Flash, nu cred că există.

Aceste evenimente sunt interceptate folosind directiva pe(). Sintaxa sa este:

La (eveniment) (... // Acțiunile noastre)

Mai jos puteți încerca să declanșați singuri câteva evenimente:

Un exemplu foarte des folosit este urmărirea unui link atunci când se face clic pe un buton:

Pe (lansare) ( getURL ("http://rubs.boom.ru"); )

Pentru a testa acest scenariu, evidențiați butonul, apăsați Ctrl+Alt+A și intrați în program.

Acesta este modul în care puteți intercepta cu ușurință toate evenimentele asociate cu un buton. Ei bine, cum să le folosești este în întregime o chestiune de imaginație.

Pași de bază cu Clipuri de film

O cantitate mare de creativitate în Flash provine din manipularea simbolurilor. Aproape toate tehnicile de bază, toate trucurile și efectele sunt imposibile fără aceste acțiuni.

Cu ActionScript, puteți face aproape orice doriți cu personaje. Trebuie doar să rețineți că aceste acțiuni pot fi efectuate doar fie ca răspuns la o acțiune a utilizatorului, fie atunci când apare un anumit cadru pe cronologia.

Deci ce avem? Voi enumera doar principalele instrumente (după părerea mea). Restul le veți găsi în lista de elemente de limbă sau în ajutor.

Funcții de clipuri video care pot fi apelate:

  • Joaca() - pornește sau reia redarea unui clip;
  • Stop() - oprește redarea clipurilor;
  • gotoAndPlay() - merge la un anumit cadru (scenă) și continuă redarea;
  • gotoAndStop() - merge la un anumit cadru (scenă) și oprește redarea.

Proprietățile (parametrii) clipurilor care pot fi citite/modificate:

  • _X y - coordonatele clipului (în pixeli);
  • _xscale, _yscale - scara clipului (în procente), orizontal, respectiv vertical;
  • _latime inaltime - latimea si inaltimea clipului (in pixeli);
  • _rotație - unghiul de rotație al clemei (în grade);
  • _alfa - transparenta clipului (in procente);
  • _vizibil - vizibilitate.

Acest lucru nu este tot ce se poate face cu clipuri. Folosește alți parametri, experimentează, fii creativ!

Nume

Pentru a accesa clipuri, trebuie să înțelegem conceptul de nume de obiect (nume de instanță) și calea către un obiect (cale țintă). Să fim de acord că clipul de film și obiectul sunt aceleași lucruri pentru noi.

Numele obiectului este numele unei anumite instanțe de simbol. Să presupunem că putem avea un simbol - o mașină, iar exemplele acestui simbol vor fi numite „Mașină1”, „Mașină2”, „Pickup”, „Zaporozhets”...

Pentru a da un nume unui obiect, trebuie să selectați obiectul, iar în panoul Instanță (Fereastră->Panouri->Instanță, Ctrl+I) în coloana Nume, introduceți numele obiectului (Fig. 2). ). Numele pot consta numai din litere, cifre și caracterul de subliniere ("_"), iar numele nu poate începe cu un număr.


Orez. 2 - Panoul de instanță

Cărări

Calea către un obiect este o înregistrare a numelui obiectului, ținând cont de ierarhie. Voi încerca să explic ce este.

Știți că în Flash, obiectele pot fi imbricate unele în altele, formând astfel o ierarhie. Deci, această imbricare nu oferă doar confort în manipularea obiectelor, ci limitează și vizibilitatea numelor obiectelor. Vizibilitatea este limitată la nivelul său. Un obiect poate accesa direct (după nume) numai obiectele din el care sunt cu un nivel mai jos în ierarhie.

Pentru a accesa un obiect la un alt nivel, trebuie să cunoașteți calea către el. Mai mult, calea poate fi specificată fie absolut (de la nivelul de sus al ierarhiei), fie relativ (de la nivelul curent).

Calea include obiecte prin care trebuie să „trecem” de-a lungul arborelui ierarhic pentru a ajunge la obiectul de care avem nevoie, listat printr-un punct. În plus, există mai multe indicatoare (le putem numi „obiecte virtuale”) care sunt adesea foarte utile:

acest - un pointer către „însuși” (adică către obiectul curent). Poate fi necesar, de exemplu, atunci când trebuie să treceți un pointer către obiectul de la care această funcție este apelată unei funcții.

_mamă - pointer către „părinte”. Indică un obiect la un nivel superior în ierarhie.

_rădăcină - „rădăcină”. Acesta este începutul ierarhiei. Nu puteți face fără ea când specificați o cale absolută.

Drumul arată astfel:

leaf.play();- la subobiect frunze(frunză) funcția numită Joaca();

_parent.tree.leaf.stop();- se presupune că există un obiect la un nivel copac, care are un obiect frunze, din care este numită funcția Stop();

_root.banner._visible = false;- face un clip banner, situat la etajul 1, invizibil.



Orez. 3 - Ierarhia clipurilor

Pentru ilustrare, să luăm o ierarhie de 5 obiecte (Fig. 3). Obiectele 1-4 sunt pe primul strat, obiectul 5 este pe al 2-lea strat. Obiectul 2 este imbricat în obiectul 1, iar obiectul 3 este imbricat în obiectul 2. Obiectele din imagine sunt imbricate vizual unul în celălalt, dar acest lucru nu înseamnă în niciun caz că acesta ar trebui să fie cazul „în viața reală”. Aici sunt grupate pentru claritate. Deoarece numele unui obiect nu poate începe cu un număr, să fie numite obiectele noastre obj1-obj5.

Acum să ne ocupăm de căi. Mai întâi, să ne uităm la ce obiecte se pot referi unele la altele prin nume. obj1 poate contacta obj2, A obj2- La obj3, dar in acelasi timp obj1 nu pot contacta obj3 direct, pentru că nu este cuprins în obj1, si in obj2.

Să presupunem că primul obiect are nevoie de obiectul 3 pentru a începe din nou redarea din primul cadru. Iată cum se face:

Obj2.obj3.gotoAndPlay(1);

Pentru ca al 4-lea obiect să facă ca primul obiect (notă cu toate subobiectele!) semi-transparent, trebuie să scrie următoarele în scriptul său:

Parent.obj1._alpha = 50;

Root.obj1._alpha = 50;

Deoarece obj4 este la primul nivel al ierarhiei, apoi pentru ea _rădăcinăȘi _mamă- la fel.

Acum pentru obiectul 3 vom scrie un script care va face obiectul 5 invizibil atunci când este apăsat butonul mouse-ului. În scriptul pentru obiectul 3 scriem:

OnClipEvent (mouseDown) ( _root.obj5._visible = false; )

În acest fragment am folosit o cale absolută. Dacă am folosi relativă, ar arăta astfel:

Parent._parent._parent.obj5._visible = fals;

Sper că am lămurit problema căii.

Exemplele de mai sus au arătat nu numai cum arată căile, ci și cum sunt numite funcțiile și sunt atribuite valorile proprietăților.