Odată ce am intrat în această problemă, trebuie să opriți clipul video înainte de al pune înapoi în piscină. Că reptilele nu s-au rotit acolo în inexistență și nu au mâncat resurse. Cu toate acestea, metoda stop () oprește numai cronologia clipului video în sine și toate clipurile de film pentru copii care se rotesc continuă să se rotească. De exemplu, dacă aveți un clip de „rezervor“, care are o torsiune piese de animație, dar, în plus, are un clip de „om în trapa“, care flutura un steag. Apoi, după metoda stop () de pe rezervor, omizile se vor opri. Un mic om fluturând și fluturând, fluturând și fluturând. Rezervorul poate fi deja îndepărtat, dar până când este curățat de un colector de gunoi - valuri și valuri, procentul tulpini și tulpini. Și dacă aveți o piscină de rezervoare, atunci sute de tancuri în piscină și pe fiecare persoană fluturând și fluturând un drapel ... Uzhos!
Este clar că trebuie să faceți o metodă care execută ierarhic toată ferma și o oprește (). În cazul rezervorului, de altfel, teoretic, dacă aveți codul oopeshno arhitectural făcut totul bine, atunci, teoretic, rezervorul este conștient de om mic, iar stația ar trebui să fie nonuniversal pentru toate clipurile, așa cum este implementat în rezervorul de clasă. La urma urmei, poate trebuie doar să oprești creierul să oprească animația (să scape de quanta sau să se înrăutățească pe cineva altcineva). Creierii consumă și resurse în absență.
Cu toate acestea, există o mulțime de locuri în care ar fi frumos să ai o metodă universală pentru a opri toate animațiile. De exemplu, dacă aveți o vizualizare pentru o unitate care nu este legată de logică. Ei bine, este genul de artist care a făcut-o, cât de convenabil - nu toate animațiile dintr-o singură cronologie și omida și steagul. Și ierarhic. Aici puteți specula despre Graphic vs. MovieClip în FlashIDE, dar acesta este un subiect separat. Este suficient să fie plină de situații în care opțiunea de vizualizare este compusă, dar cu logică nesupusă. De exemplu, într-un sistem complex de meniuri animate.
Și acum, în cele din urmă. Putem realiza o metodă universală de utilitate statică în orice clasă MovieClipUtility pe care o utilizați de fiecare dată când aveți nevoie pentru a bloca movieclip. Și puteți adăuga la clasa MovieClip o astfel de metodă lipsă stopAll () (ay Adobic!). Fac acest lucru - metoda upgradeMovieClip este trasă la începutul designerului clasei principale a jocului. Și asta e tot. Acum poți trage clipurile din metoda stopAll ().
Poate cineva va veni la îndemână. Sau critica.
Mă întreb dacă o iau într-o bancă. Deși nu este o idee bună să extind filmul, mi se pare. Pot apărea probleme de compatibilitate în versiunile viitoare ale Api.
Ei bine, revedeți metoda nu este stopAll și myStopAll, customStopAll sau chiar elmortemHardStopAll :) - cu siguranță nu veți intra în conflict.
1) Apoi nu este vorba despre DisplayObject, ci despre DisplayObjectContainer. Metoda stopAll acceptă orice DisplayObjectContainer ca parametru. Dar nu am nevoie niciodată de ea. Pur și simplu dacă aveți o viziune, va fi corectă dacă artistul său compune (plasează omizi, șasiu, etc.). Și cel mai probabil el o va face în FlashIDE. Și de acolo vin la noi miezuri. Totuși, în această variantă, metoda poate fi extrasă din cadrele din IDE. Adevărat, el va lucra doar în compilare.
2) Ok - permiteți-mi să am TankMC - movieclip din bibliotecă. Acolo, în interiorul artistului din ierarhie a fost folosit un clip video al pavilionului. Lasă-mă să ceară - am un obiect de joc Tank moștenit de la BaseObject, se abonează la REMOVED_FROM_STAGE și toate astea. Când este scos din afișaj, rezervorul va opri () TankMC. Și steagul continuă să cânte. Adică, trebuie să treceți peste ierarhia TankMC și să renunțați la oprire () tuturor celor care sunt prinși. Fie avansați o dată și executați și atârnați fiecare prelungitor pe REMOVED_FROM_STAGE care conține.
Cu siguranță nu am verificat, dar cred că nu este o operațiune foarte rapidă, mai ales dacă există multe obiecte - și există multe frunze. Mormane de operațiuni de alocare a memoriei (nu cred că există fonduri pentru frunze), introducerea / ștergerea ... toate acestea întristează procesorul.
În plus față de aeriene, pot da un exemplu. Să presupunem că aveți un avion. El zboară și zboară și se așează pe purtătorul de aeronave. În cod, l-ați dezlegat de rădăcina globală și ați fixat-o pe purtătorul de aeronave. Acum, ori de câte ori transportatorul a zburat - avionul a rămas în picioare pe placa de aterizare. Este logic? Este logic. În abordarea dvs., la momentul eliminării filmului, toate animațiile avionului vor fi înghețate. Nu avem nevoie de asta.