De uitgebreide handleiding voor het vooraf laden van een enkel SWF-bestand

In deze zelfstudie maken we een SWF die zichzelf vooraf laadt, wat betekent dat de preloader en de inhoud zich in hetzelfde bestand bevinden. We zullen bespreken hoe we de dingen op de juiste manier doen en de vallen vermijden.


Stap 1: Wat is Single SWF Preloading?

Het idee van een enkele SWF-preloading is dat u een Flash-object heeft dat zichzelf vooraf laadt. Dat betekent dat de preloader, met de bijbehorende functionaliteit en activa, samen wordt ingebed in hetzelfde SWF-bestand als de hele Flash-film of -toepassing.

We beginnen deze tutorial met wat theorie en maken het af met het maken van een FLA samen met een preloader-klasse die je kunt gebruiken in toekomstige projecten. In de loop van de tutorial zullen we veelvoorkomende valkuilen en belangrijke overwegingen bespreken.

Ook nu Activetuts + zich begint te concentreren op documentklassen en in het algemeen dingen in klassenbestanden zoveel mogelijk bijhoudt, doen we dat precies in het praktische deel van deze tutorial. Bekijk de snelle tip: Hoe een documentklasse in Flash te gebruiken als je de basis moet leren.

Zorg ervoor dat u een bijgewerkte versie van Flash CS3 of Flash CS4 hebt. Ik weet zeker dat een latere CS4-update de manier waarop klassen zijn geladen heeft veranderd en dat het hier allemaal verschil kan maken!

Ik geef meteen toe dat deze tutorial vrij lang is voor dit enge onderwerp, maar het bevat alles wat je moet weten, dus pak het vast en laten we er naar toe gaan!


Stap 2: Waarom Single SWF Preloading?

Het idee van een preloader ligt voor de hand: u wilt ervoor zorgen dat de gebruiker visuele feedback krijgt die aangeeft dat het Flash-object wordt geladen. Het insluiten van een groot Flash-bestand dat 10 seconden nodig heeft om te laden, kan het verschil betekenen tussen gebruikers die de website bezoeken of verlaten, mocht de preloader de gebruiker niet verplichten om door te gaan.

Het proces van het maken van "zelfvoorspellende" Flash-bestanden presenteert enkele problemen en problemen. Er zijn andere preloading-technieken die heel gemakkelijk samen te stellen zijn, zoals één SWF-bestand dat een ander vooraf laadt en het toevoegt aan het eenmaal geladen podium.

Dus waarom moeite doen? Welnu, er zijn situaties waarin je geen keus hebt.

U wilt bijvoorbeeld Flash-spellen maken die u naar zo veel mogelijk Flash-gamingportals wilt verspreiden. De meeste van deze portals ondersteunen alleen games in de vorm van een enkel SWF-bestand, waardoor je geen andere keus hebt dan ervoor te zorgen dat je spel vanuit zichzelf prima vooraf laadt.

Afgezien van dergelijke voor de hand liggende voorbeelden, is er het argument van het hebben van een voltooid product in slechts één bestand, dat zorgt voor eenvoudig beheer.


Stap 3: Hoe SWF-bestanden worden geladen

Wanneer uw browser op een Flash-object stuitert en begint met laden, begint het vanaf het begin van de tijdlijn. Het laadt de frames een na de ander. Zodra het eerste frame is geladen, kan het worden weergegeven.

Onze aanpak hier is om een ​​preloader op het eerste frame te plaatsen zodat de gebruiker iets ziet gebeuren, terwijl de browser de rest van het bestand blijft laden. We schrijven code om de algehele voortgang te controleren en wanneer deze is voltooid, gaan we door naar de hoofdinhoud van het bestand.

De uitdaging is om het formaat van het eerste frame tot een minimum te beperken. Als je code en geluiden in het eerste frame laat stapelen, heb je misschien een preloader die pas zichtbaar is nadat je misschien 60% van de film hebt geladen.

Een goede tip als u een percentageteller wilt gebruiken die getallen weergeeft, is een lettertype te gebruiken dat klein is in bytegrootte. Maar dit brengt je alleen zo ver. Helaas moeten we behoorlijk wat harder werken om de dingen op onze manier te doen!

Het is al vele malen eerder gezegd en het is de moeite waard om opnieuw te zeggen:

Preloaders, de moeilijkste van de eenvoudigste taken in Flash ...

Stap 4: De definiërende variabelen

Er zijn een aantal dingen die van invloed zullen zijn op wat in welk frame wordt geplaatst, zoals:

  • Waar op de tijdlijn zet je activa.
  • Welk kader u kiest als het "klasse exportframe" (zie Stap 11).
  • Of u nu activa vóór of na het klassenexportkader plaatst.
  • In Flash CS4 - kiezen of het item al dan niet wordt geëxporteerd in het class-exportframe (in het dialoogvenster met symbooleigenschappen).
  • In Flash CS3 - kiezen of het item al dan niet in het eerste frame wordt geëxporteerd (in het dialoogvenster met symbooleigenschappen).
  • Of je geluiden gebruikt.

Stap 5: De problemen

Het grootste probleem waar we voor staan ​​is regelen wat in frame één eindigt, omdat, zoals hierboven vermeld, alles op frame één moet worden geladen voordat de preloader kan worden weergegeven.

Anders dan dat, zijn er verschillen tussen hoe Flash CS3 en CS4 werken. In de volgende stap zal ik een aantal grondig onderzochte uitspraken doen waar je naar terug kunt verwijzen als dat nodig mocht zijn. Het zou een geweldige hulpbron moeten zijn als u snel problemen met uw preloading wilt oplossen, om erachter te komen waarom het zich niet gedraagt ​​zoals u verwacht.

Ik zal proberen de uitspraken wat tastbaarder te maken door te verwijzen naar TweenLite, een geweldige tweening-bibliotheek van Jack Doyle via greensock.com. We zullen TweenLite gebruiken in het praktische deel van deze tutorial, dus dit zal het meest logisch zijn.


Stap 6: De verklaringen

Deze uitspraken gelden voor zowel Flash CS3 als CS4, tenzij anders aangegeven. "TweenLite importeren" betekent in feite "het importeren en gebruiken van TweenLite" - de resultaten kunnen verschillen als u de code niet daadwerkelijk gebruikt, omdat de Flash-compiler ongebruikte importen negeert. Het typen van een import-statement is niet hetzelfde als het gebruik van de code.

  • Als u TweenLite op elk frame in de hoofdtijdlijn importeert, wordt TweenLite in het eerste frame van de film geladen.
  • Als u een MovieClip hebt die TweenLite in de interne tijdlijn importeert en deze MovieClip plaatst na het klas export frame, TweenLite wordt geladen in het class export frame.
  • Als u een MovieClip hebt die TweenLite in de interne tijdlijn importeert en deze MovieClip plaatst voor het klasse exportframe, TweenLite wordt in het eerste frame van de film geladen.

De volgende drie instructies verwijzen naar het scenario waarin u een MovieClip hebt die wordt geëxporteerd voor ActionScript, met behulp van een extern klassenbestand, dat op zijn beurt TweenLite in het klassenbestand importeert.

  • De MovieClip plaatsen na het klasse-exportframe zorgt ervoor dat TweenLite het klasse-exportframe laadt. Er is geen verschil of u het selectievakje "Exporteer in frame X" ("Exporteer in eerste frame" voor CS3) met betrekking tot geïmporteerde klassen zoals TweenLite aanvinkt. Het selectievakje is echter van invloed op de vraag of de items (vormen, bitmaps) van de MovieClip al dan niet in het exportframe worden geladen. In het geval van CS3 kun je natuurlijk alleen kiezen of je het in het eerste frame wilt laden of niet.
  • In Flash CS4 de MovieClip plaatsen voor het klasse exportframe zal TweenLite op het eerste frame laden. Er is geen verschil of u de "Exporteer in frame X" aanvinkt. De niet-codeactiva van de MovieClip worden ook in het eerste frame geladen.
  • In Flash CS3 als u de MovieClip plaatst voor het klasse exportframe, en ongeacht of u "Exporteer in eerste frame" hebt aangevinkt, krijgt u een stil falen! Betekenis: de MovieClip die u op het podium zet en een extern klassenbestand zou moeten gebruiken, verschijnt gewoon als een normale MovieClip en geeft u geen enkele aanwijzing. U kunt echter nog steeds bepalen of de vorm / bitmapinhoud van de MovieClip al dan niet in het eerste frame moet worden geladen. Dit helpt echter niet echt, want je bent net zo gek van het laden van de les.

De volgende drie instructies verwijzen naar het scenario waarin u een MovieClip hebt die voor ActionScript is geëxporteerd als "CustomClass", al dan niet met behulp van een extern klassenbestand, dat wordt geïnstantieerd en toegevoegd aan een fase van een MovieClip die op de tijdlijn wordt geplaatst (alleen zoals de MovieClip van de vorige drie stellingen.) Deze CustomClass is enkel en alleen geïnstantieerd en bestaat niet eerder op de hoofdtijdlijn.

  • In Flash CS4 met het selectievakje "Exporteren in frame X" aangevinkt, wordt CustomClass geladen in frame X en wordt correct weergegeven. Als het vakje niet is aangevinkt, wordt het nog steeds in frame X geladen en wordt het correct weergegeven.
  • In Flash CS3 met het selectievakje "Export in eerste frame" aangevinkt, wordt CustomClass in het eerste frame geladen en correct weergegeven. Als het vakje niet is aangevinkt krijg je een 1046 Type-fout, omdat de klasse niet kan worden gevonden.

Laten we met al deze beperkingen op zijn minst deze positieve verklaring overwegen:

  • Als u een MovieClip plaatst die alleen vormen / bitmaps bevat, wordt deze alleen geladen vlak voor het frame dat nodig is. Tenzij je ervoor kiest om het eerder te exporteren, dat wil zeggen!

Dit is echt een interessante:

  • In Flash CS3 je kunt een geluid niet exporteren op iets anders dan het eerste frame. In Flash CS4 dat kan, in het kader van de klasse-export.

Ja, je leest het goed. Ik neem aan dat het redelijk is om aan te nemen dat Adobe wil dat mensen upgraden naar CS4. Dus wat te doen als u vastzit aan CS3 en het gras aan de andere kant groener is? Ik zal het je in de volgende stap vertellen.


Stap 7: Activa laden in Flash CS3

Deze hele stap is alleen voor degenen onder u die Flash CS3 gebruiken.

Als u alle instructies in de vorige stap hebt gelezen, zult u zich het probleem realiseren dat veel MovieClips zijn geëxporteerd voor ActionScript. Deze moeten allemaal in frame één worden geladen of zijn niet beschikbaar. Gelukkig waren deze uitspraken in de veronderstelling dat die activa nooit op de hoofdtijdlijn werden geplaatst, wat toevallig onze oplossing is! (Dit is ook de enige manier om geluiden te laden anders dan in frame één ...)

Dit is hoe het gedaan is:

  1. Ga naar de eigenschappen van alle MovieClip / Sprite / Sound-items die u wilt exporteren en haal het vinkje weg bij "Exporteer in eerste frame".
  2. Maak in het tweede frame van de hoofdtijdlijn een lege MovieClip met de naam AssetHolder.
  3. Maak in deze AssetHolder MovieClip een actielaag met een stop (); oproep op het eerste frame.
  4. Zet nog steeds in de AssetHolder een laag voor elk geluid dat je wilt gebruiken en sleep die geluiden naar het tweede frame van zijn eigen laag. Ze Niet doen moet gelukkig langer zijn dan één frame. Voor alle andere Sprites en MovieClips kun je deze in een enkele laag of meerdere plaatsen om het organiseren te vergemakkelijken. Zet deze ook op het tweede frame en laat het eerste frame leeg.

Hierdoor worden al uw items in het tweede frame geladen. De oplossing is een beetje plakkerig, maar het is niet zo moeilijk als nieuwe software te moeten kopen voor dit specifieke probleem.

(Een pluim voor 8bitrocket voor deze truc!)


Stap 8: Profieldistributie- en grootteverslag bandbreedte

Een ding dat ik moet noemen voordat we beginnen te werken, is de bandbreedte-profiler. Dit is een essentieel hulpmiddel bij het uitzoeken van uw preloading-problemen. Wanneer u een voorbeeld van een film bekijkt, kunt u deze bekijken en vervolgens de bandbreedteprofiler kiezen. Of druk op Ctrl + B.

Hier kunt u schakelen tussen frame-voor-frame grafieken en streaming grafieken. U kunt ook het downloaden van de film simuleren met een door u gekozen verbindingssnelheid door deze te kiezen in het menu Weergave of door nogmaals op Ctrl + Enter te drukken (wijzig de gesimuleerde downloadsnelheid met behulp van het submenu Weergave> Downloadinstellingen). Dit is essentieel om te weten te komen hoe je preloader er uit zal zien, zonder de moeite te hoeven nemen om het te uploaden en je bandbreedte te beperken. Voor dat specifieke geval kan ik Firefox Throttle aanbevelen.

Naast de zeer nuttige tool die de bandbreedteprofiler is, is er de mogelijkheid om een ​​grootteverslag te genereren. Druk op Ctrl + Shift + F12 om het dialoogvenster Publicatie-instellingen te openen.

Ga naar het tabblad Flash en in het gedeelte Geavanceerd is er een selectievakje met het label 'Rapport genereren van grootte'. Wanneer dit selectievakje is aangevinkt, zal een voorbeeld van of een publicatie van uw film een ​​tekstbestand genereren in dezelfde map als uw FLA-bestand dat nuttige informatie bevat over de onderdelen waaruit de totale filmomvang bestaat.


Stap 9: Einde van de theorie

Eindelijk kunnen we beginnen met het maken van een Flash-film met een mooie self-contained preloader!

We zullen een "drie frame preloading" -techniek gebruiken. Op het eerste frame plaatsen we een preloader MovieClip met een eigen klasse "Preloader". In het tweede frame laden we alle klassen en in het derde frame laden en tonen we de inhoud. We plaatsen de inhoud in een MovieClip genaamd Application met een bijbehorende klasse "Application". Dit is waar het vlees van de applicatie naar toe gaat.


Stap 10: maak nieuw document

Begin met het maken van een nieuw AS3-document. Ik maak het 600x400px, donkergrijze achtergrond, 24 fps. Deze instellingen doen er echter niet toe.

Stel de documentklasse in op Main en druk op OK.


Stap 11: Stel het klasse-exportframe in

Ga naar Bestand> Publicatie-instellingen, het Flash-tabblad en vervolgens de ActionScript 3.0-instellingen. Typ "frame 2" in het veld "Export classes in frame".


Stap 12: Ontwerp een Preloader

Het is duidelijk dat het ontwerp van een preloader geen invloed heeft op de functie. Ik zal stap voor stap instructies geven, maar voel je vrij om deze delen over te slaan en je eigen aanpak te volgen als je dat wilt. Zorg er alleen voor dat u later opmerkt welke delen ik in de code verwijs.

Teken een rechthoek met afgeronde hoeken en geef deze een blauw verloop. Verander het dan in een MovieClip-symbool, noem het Preloader. Kies ervoor om het te exporteren voor ActionScript en de klasse Preloader aan te roepen.

Teken binnen deze nieuwe MovieClip een nieuwe afgeronde hoekrechthoek met een grijs verloop, verander het in een andere MovieClip en geef het een instantienaam van progressArea.

Ga je gang en match de lay-out van de laag die ik heb op de foto hierboven. Maak vervolgens een duplicaat van de laatste vorm en plaats deze in de voortgangsbalklaag bovenop het voortgangsgebied één. Geef het een lichtblauwe kleurovergang, verander het in een MovieClip en geef het een instantienaam van progressBar. Schakel hulplijnen in voor 9-delige schaling en zorg ervoor dat u de linker- en rechterronde buiten houdt.

Maak tenslotte een dynamisch tekstveld met een instantienaam van percentageText. Maak de tekst rechts uitgelijnd. Op die manier zal het percentageteken nooit bewegen, alleen de cijfers (die hoe dan ook veranderen). Ga naar het insluiten van tekens en zorg ervoor dat u cijfers en het percentageteken (%) insluit. Om een ​​heel kleine preloader te maken, gebruik ik een klein pixelfont genaamd Pixel Mix van dafont.com. Ik geef het ook een blauwe gloed, alleen omdat ik het kan.


Stap 13: Terug naar het werkgebied

Zorg ervoor dat de hele preloader MovieClip in het eerste frame wordt geplaatst en een instantienaam van de preloader krijgt. Maak een nieuwe laag met de naam "AS" en stop (); in het eerste frame. Houd de preloader in zijn eigen laag, "Preloader". Maak nog een laag met de naam "Toepassing". Hier zullen we uiteindelijk de belangrijkste inhoud bewaren.


Stap 14: Maak de hoofdklasse

Maak een nieuw ActionScript-bestand en sla het op in dezelfde map als uw FLA-bestand. Noem het Main.as:

 pakket import flash.display.MovieClip; import flash.events.Event; public class Main breidt MovieClip public function Main () uit preloader.addEventListener (Event.COMPLETE, onPreloaderComplete); preloader.setLoaderInfo (loaderInfo);  private function onPreloaderComplete (e: Event): void gotoAndStop (3); 

Stap 15: Maak de klasse Preloader

Maak een nieuw ActionScript-bestand en sla het op in dezelfde map als Preloader.as:

 pakket import flash.display.LoaderInfo; import flash.display.MovieClip; import flash.events.Event; import flash.events.ProgressEvent; openbare klasse Preloader breidt MovieClip uit openbare functie Preloader ()  openbare functiesetLoaderInfo (ldrInf: LoaderInfo): void ldrInf.addEventListener (ProgressEvent.PROGRESS, onProgress); ldrInf.addEventListener (Event.COMPLETE, onComplete);  private function onProgress (e: ProgressEvent): void var percent: int = Math.round (e.bytesLoaded / e.bytesTotal * 100); progressBar.width = percent / 100 * progressArea.width; percentageText.text = procent + "%";  private function onComplete (e: Event): void dispatchEvent (e); 

Stap 16: Main en Preloader grijpen

Dus wat doen deze twee klassen?

In de constructor van Main noemen we de aangepaste setLoaderInfo () -methode van onze preloader en geven het LoaderInfo-object door dat is gekoppeld aan Main.

Preloader ontvangt dit object en voegt er twee gebeurtenislisteners aan toe. De ProgressEvent activeert de onProgress-functie, waarin we het percentage van de geladen bytes berekenen in vergelijking met de totale bytes die moeten worden geladen. Het percentage wordt gebruikt om de breedte van de voortgangsbalk en de tekst van ons tekstveld in te stellen.

De complete gebeurtenis wordt eenvoudig teruggestuurd naar Main, die op zijn beurt de hoofdtijdlijn naar frame drie springt wanneer de gebeurtenis wordt ontvangen.


Stap 17: Sommige inhoud toevoegen

Om iets te hebben dat de werking van de preloader duidelijk laat zien, voeg ik een mooie macrofoto toe van een kat genaamd Runa, genomen door een vriend van mij. U kunt de afbeelding vinden in de bronbestanden die bij deze zelfstudie zijn meegeleverd. Ik heb de bitmap geïmporteerd en ik verander het in een MovieClip genaamd "Cat".

Voel je vrij om elke afbeelding te gebruiken die je geschikt vindt. Geef de clip een instantienaam van 'cat'.


Stap 18: De toepassing MovieClip maken

Zoals je op de bovenstaande schermafbeelding kunt zien, heb ik de Cat MovieClip op frame drie geplaatst in de laag Application. Neem de MovieClip die je hebt gemaakt, kat of geen kat, en druk nogmaals op F8 om hem te nestelen in een nieuwe MovieClip die je Application noemt. Exporteer dit voor ActionScript als applicatie.


Stap 19: De toepassingsklasse

Maak de klasse Application door een nieuw AS-bestand te starten en het op te slaan als "Application.as". Laat de klasse Application er zo uit zien:

 pakket import com.greensock.TweenLite; import com.greensock.easing.Sine; import flash.display.MovieClip; openbare klasse Toepassing breidt MovieClip uit openbare functie Toepassing () TweenLite.to (cat, 7, scaleX: 4, scaleY: 4, onComplete: tweenBack, ease: Sine.easeInOut);  private function tweenBack (): void TweenLite.to (cat, 3, scaleX: 1, scaleY: 1, onComplete: reTween, ease: Sine.easeInOut);  private function reTween (): void TweenLite.to (cat, 7, scaleX: 4, scaleY: 4, onComplete: tweenBack, ease: Sine.easeInOut); 

Dit zal de kat oneindig in en uit laten bewegen, zodat je voor altijd het detail van haar neusvacht zult herinneren. Hoe deze klasse werkt, is niet belangrijk, wat is belangrijk is dat we TweenLite importeren en gebruiken en er zo voor zorgen dat het onderdeel wordt van het SWF-bestand na export.


Stap 20: CS3- en CS4-problemen

Laten we nog een minuutje teruggaan naar de schoolbank.

Deze film compileert prima in CS4. De MovieClip van de toepassing is ingesteld om te exporteren op frame 2, tenzij u deze hebt gewijzigd. Als je het hebt veranderd, zie je misschien iets vreemds. Meer hierover in de volgende stap.

Als je CS3 gebruikt, doet deze instelling er echt toe. Je moet gaan en ervoor zorgen dat je het selectievakje "Exporteren in eerste frame" in de eigenschappen van de Application MovieClip uitschakelt, anders wordt alles in het eerste frame geladen!

Dat is niet het enige probleem. Als u probeert te compileren, krijgt u een 1046 Type-foutmelding, waarin staat dat u niet over het type TextField beschikt. Dus zoals je kunt raden, CS3 doet het een beetje anders. Wat is er gaande? Nou, je probeert een TextField in de Preloader MovieClip te gebruiken, maar je hebt het niet geïmporteerd. In CS4 wordt dit automatisch voor u afgehandeld, maar niet in CS3.

Gelukkig is de oplossing eenvoudig, voeg gewoon toe:

 import flash.text.TextField;

naar uw Preloader-klasse en u bent helemaal klaar.

Sommigen van jullie hebben misschien al gedacht dat ik Sprite had moeten uitbreiden voor mijn Preloader-klasse in plaats van MovieClip. Welnu, dit is de reden dat ik dat niet heb gedaan; Ik wilde wachten tot dit punt om het naar voren te brengen. Omdat het Preloader-symbool zowel de "ProgressArea" als de "ProgressBar" bevat, die beide MovieClips zijn, zou u dezelfde 1046 Type-fout hebben gekregen.

Dezelfde oplossing is natuurlijk ook hier mogelijk. In feite zou je nu de Preloader moeten veranderen om Sprite uit te breiden in plaats van MovieClip, en als je CS3 gebruikt, zorg er dan voor dat je de Sprite-klasse ook binnen de Preloader-klasse importeert.


Stap 21: Nog een probleem

Ik noemde een raar verschijnsel in de laatste stap. Als u het vakje "Exporteren in frame 2" van de toepassing uitschakelt en een gesimuleerde download uitvoert, ziet u de preloader verdwijnen, tenzij u het hoofdframe van de preloader ook hebt uitgebreid tot het tweede frame.

Dus wat gebeurt er echt? Simpel gezegd, de eerste stop (); verklaring telt niet. Hoe is dat voor een duidelijke werkstroomplanning? Merk op dat als u een traceerinstructie in het eerste frame na de stop (); bel, het komt eruit. Belangrijk: merk op dat dit probleem alleen zichtbaar wordt als we de download simuleren!

De les die hier wordt geleerd, is vertrouw de gesimuleerde download niet! Het zal je niet precies laten zien hoe dingen zullen laden en functioneren. Je kunt gewoon de stop () houden; en preloader in het eerste frame en je zult het goed doen als het gaat om de inzet. Het kan echter vervelend zijn om een ​​voorbeeld te bekijken, tenzij u de toepassing hebt ingesteld om te exporteren op frame 2. En dat is alleen voor dit specifieke scenario.

In CS3 moet u het vakje Exporteren op de MovieClip van de toepassing uitschakelen, anders zult u uiteindelijk in het eerste frame worden geladen. Maar als je dat doet, kom je dit probleem tegen. Dus ga je gang en breid de preloader uit naar het tweede frame.


Stap 22: Test de film

Ga je gang en bekijk een voorbeeld van de film. Voer een gesimuleerde download op lage snelheid uit en geniet van de meesterlijk gemaakte preloader (* is alleen van toepassing als je mijn instructies hebt gevolgd tot aan de letter).

Als u de frame-per-frame grafiek of een gegenereerd grootteverslag bekijkt, ziet u dat de code in het tweede frame is geladen. Het eerste frame is slechts 4 kb en bestaat uit de Preloader-klasse en de ingesloten lettertype-glyphs. Nu is 4kb best betaalbaar wat betreft wachttijd voor het zien van de preloader, vind je niet?

Mogelijk ziet u verschillende formaten op CS3 en ziet u zeker verschillende formaten met verschillende lettertypen. Of katten.


Stap 23: Tweening van de Preloader

Je zou het idee kunnen hebben dat je TweenLite wilt gebruiken om de preloader weg te vagen door de alpha naar 0 te tweenen - maar je wilt TweenLite niet in het eerste frame laden omdat dat nog een 8kb aan de eerste download toevoegt.

Er zijn verschillende manieren om dit te bereiken en we zullen het oplossen door een MovieClip te gebruiken in het derde frame dat de preloader vangt en tweens het. Wanneer dit is voltooid, gaat het verder naar het vierde frame, waar we de toepassing naartoe hebben verplaatst.

De reden om het in het derde frame te plaatsen is dat we het niet in het tweede frame kunnen plaatsen zonder dat TweenLite in het eerste frame wordt geladen.

Nu gaan we weg van de standaard preloadtechniek met drie frames.


Stap 24: Voeg een laag toe en stop (); gesprekken

Voeg een nieuwe laag toe met de naam "Preloader catcher". Zorg ervoor dat je stop () plaatst; roept frames één, twee en drie op. Dit is om te voorkomen dat je een voorvertoning krijgt bij het simuleren van een download, zoals eerder vermeld.

Ga je gang en verplaats de toepassing naar het vierde frame en verleng Preloader naar het derde frame.


Stap 25: Maak de Catcher

Zorg ervoor dat je een keyframe hebt in het derde frame van de Preloader-catcherlaag. Ga naar dit frame, teken een kleine vorm en zorg dat de alfa van de vulkleur is ingesteld op 0%. Dit moet een onzichtbare MovieClip zijn. Verander het in een MovieClip-symbool genaamd PreloaderCatcher of iets dergelijks.

Exporteer de MovieClip als PreloaderCatcher. Als u CS4 gebruikt, maakt het niet uit of u het voor frame 2 exporteert of niet, omdat het ongeacht wat in dat frame wordt geladen. Wel, het verandert één ding, weet je nog? Of het nu gaat of niet vorm wordt geladen op frame 2. In wezen doet het er niet toe gezien de bijna onbestaande bestandsgrootte voor deze vorm. Je kunt het echter evengoed uitschakelen voor een goede gewoonte.


Stap 26: De PreloaderCatcher-klasse

Maak een nieuw klassenbestand met de naam PreloaderCatcher.as:

 pakket import com.greensock.TweenLite; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; importeer Preloader; public class PreloaderCatcher breidt Sprite uit openbare functie PreloaderCatcher () addEventListener (Event.ADDED_TO_STAGE, onAdded);  private function onAdded (e: Event): void removeEventListener (Event.ADDED_TO_STAGE, onAdded); var preloader: Sprite = MovieClip (bovenliggend element) .getChildByName ("preloader") als Sprite; TweenLite.to (preloader, 0.5, alpha: 0, onComplete: function (): void MovieClip (parent) .nextFrame ();); 

Zoals u kunt zien, werkt deze klasse door eerst de preloader te verkrijgen door de ouder als Sprite te casten en door getChildByName ("preloader") aan te roepen, waarbij preloader de naam van het exemplaar is. De preloader is ook een Sprite uitgebracht, daarna wordt TweenLite gebruikt om het uit te faden.

Wanneer de tweening is voltooid, werpt de functie onComplete in TweenLite het bovenliggende object als een filmclip, zodat u de methode nextFrame kunt aanroepen.


Stap 27: Waarom de vier frames?

Zoals ik al eerder zei, zijn we nu weggegaan van de preloadtechniek met drie frames. Dat is op zich niet bepaald godslastering, maar ik weet zeker dat sommigen van jullie zich afvragen waarom we dat deden. In plaats daarvan hadden we de preloader-tweening kunnen verwerken in de toepassingsclip ...

In dat geval heb je volkomen gelijk! De reden dat ik hier vier frames gebruikte, was om je te laten zien hoe je het moet doen, terwijl je de dingen gescheiden houdt. Tweening van de preloader; behoort dat tot het preloader-gedeelte of het applicatiegedeelte? Preloader zeker, maar in dit geval wilden we niet dat het in het eerste frame zou laden. Daarom eindigen we met deze extra "catcher" -klasse.

Onthoud dat dit allemaal optioneel is. Als je eenmaal weet hoe je alles moet doen, kun je gemakkelijk beslissen wat je situatie vereist.


Stap 28: Geluiden en extra activa

In stap 7 heb ik je verteld over de problemen met het laden van bezittingen in CS3. Aangezien deze tutorial gericht is op zowel gebruikers van CS3 als CS4, zullen we uitgaan van de kleinste gemene deler en de AssetHolder-aanpak gebruiken. Als u CS4 gebruikt, kunt u de volgende stappen op dezelfde manier uitvoeren en het zal precies hetzelfde werken, of u kunt de AssetHolder-aanpak overslaan.

Begin met het importeren van het "music.wav" -geluid uit de bronbestanden in uw FLA.

Ga naar binnen en exporteer het voor ActionScript en zorg ervoor dat u het selectievakje 'Exporteren in eerste frame' in CS3 uitschakelt. Voor CS4 maakt dit niet veel uit. Ik gebruik Flash CS4 waarvan je waarschijnlijk al hebt vastgesteld, dus de schermafbeeldingen tonen het CS4-dialoogvenster. Als je wilt kun je overschakelen van de standaard MP3-compressie naar iets leukers. Op die manier zal het niet verschrikkelijk klinken.

Laten we nog een paar stappen doorlopen, wat tekst aan de film toevoegen en alles in een AssetHolder MovieClip stoppen!


Stap 29: Maak wat tekst

Druk op Ctrl + F8 om een ​​nieuw MovieClip-symbool te maken. Noem het TextHolder en exporteer het opnieuw voor ActionScript (in CS3) en zorg ervoor dat het selectievakje "In eerste frame exporteren" is uitgeschakeld.

Wanneer je aan het creëren bent, ben je "binnen" van deze MovieClip. Typ een statische tekst en geef deze een witte kleur. Ik gebruik hetzelfde PixelMix-lettertype als voorheen. Om een ​​gesimuleerde lijnkleur te creëren, geef ik het een gloeifiltereffect met de onderstaande instellingen.


Stap 30: Maak de AssetHolder

Maak een nieuwe laag met de naam AssetHolder. Maak een keyframe op het tweede frame, druk op Ctrl + F8 om een ​​nieuwe MovieClip te maken en noem deze AssetHolder. Exporteer dit niet voor ActionScript.

Maak in de AssetHolder MovieClip drie lagen met de naam AS, muziek en Activa. Omdat 'muziek' de naam is van het geluidsobject dat we gebruiken, is dat de naam die ik de laag noem. Nu moet je een stop plaatsen (); oproep op het eerste frame van de AS-laag.

Maak vervolgens een keyframe op het tweede frame van zowel de laag muziek als de laag Acti