For at starte helt simpelt kommer der her først en preload funktion til at loade én Flash film.

Først kommer hele koden som helhed, dernæst prøver jeg at dele det op i bider.

Forord

  1. Vi antager at vi har en flashfilm som vi gerne vil preloade inden vi afspiller den.
  2. Vi vil gerne vise brugeren i procent %, hvor langt filen er loaded, så han/hun kan følge med i hvor lang tid der mangler.
  3. Når Det hele er loaded ind skal vores flash starte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Stop timeline
stop();
 
// Vores smarte preload funktion
function preloadContent() {
 // Variabler
 var bl;
 var bt; 
 var pc;
 
 this.onEnterFrame = function() {
 // Sætter variable bl til this.getBytesLoaded();
 // Sætter variable bt til this.getBytesTotal();
 // Sætter variable pc til procent tal
 bl = this.getBytesLoaded();
 bt = this.getBytesTotal();
 pc = Math.ceil((bl/bt)*100);
 
 // Vis procent tal på skærmen (i tekstfeltet med instance navnet
 // (loading_txt) mens der loades
 loading_txt.text = pc + " %";
 
 // Når bytes loaded er mere end 10 bytes og bytes loaded
 // er det samme som bytes total, Delete this.onEnterFrame,
 // og hop hen og afspil LABEL "loaded".
 if (bl > 10 && bl == bt) {
 delete this.onEnterFrame;
 gotoAndPlay("loaded");
 }
 }
}
 
// kør vores smarte preload funktion
preloadContent();

Vi starter med at stoppe vores timeline.
Det gør vi fordi vi vil ikke have at den begynder at køre inden noget er færdig loaded.

stop();

Dernæst ligger vi ud med at lave en funktion, hvor alt vores preload actionscript kommer til at ligge i.
Det er altid en god idé at ligge ens kode ind i seperate funktioner. Det er både godt for overskueligheden, og så kan man kalde dem fra forskellige steder i sin flash film. Feks. fra en knap.

Vi navngiver vorees funktion her "preloadContent". det er en god praksis at navngive sine funktioner efter det de gør. i dette tilfælde skal vi preloade vores content.

1
2
3
function preloadContent() {
 
}

Dernæst laver vi 3 variabler som kommer til at holde informationer for hvor meget af flashen der er blevet loaded, hvor meget hele flashen fylder i alt og tilsidst en til at holde på antallet af procent der er loaded.

1
2
3
4
5
6
7
function preloadContent() {
 // Variabler
 var bl;
 var bt; 
 var pc;
 
}

Efter vi har deklareret vores 3 variabler er vi klar til at tjekke vores meget der er loaded af vores flash, hvor meget vores flash fylder i alt og regne det ud i procenter.
For hele tiden at kunne tjekke dette bruger vi

1
2
3
this.onEnterFrame = function() {
 
}

this.onEnterFrame funktionen bliver eksekveret med det antal din framerate er, så hvis din framerate er på fx 31, vil den blive eksekveret 31 gange i sekundet.

Nu kan vi altså finde finde ud af hvad vores flash har loaded, fylder i alt og regne det om i procent.
vi skal nu til at bruge vores 3 variabler "bl" "bt" "pc" inde i this.onEnterFrame funtionen bruger vi vores 3 variabler på følgende måde.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function preloadContent() {
 // Variabler
 var bl;
 var bt; 
 var pc;
 
 this.onEnterFrame = function() {
 // Sætter variable bl til this.getBytesLoaded();
 // Sætter variable bt til this.getBytesTotal();
 // Sætter variable pc til procent tal
 bl = this.getBytesLoaded();
 bt = this.getBytesTotal();
 pc = Math.ceil((bl/bt)*100);
 
 }
}

først bruger vi bl til at finde af hvor meget af flashen er loaded
bl = this.getBytesLoaded();

Så bruger vi bt til at finde ud af hvor meget flashen fylder i alt
bt = this.getBytesTotal();

tilsidst regner vi det om i procent.
pc = Math.ceil((bl/bt)*100);

Hvis de 3 variabel navne før var svære at forstå giver det måske lidt mere mening nu.

bl (forkortelse af Bytes Loaded)
bt (forkortelse af Bytes Total)
pc (forkortelse af procent)

Nu tjekker vi altså 31 gange i sekundet hvor meget der loadet (bl), og regner det om i procent (pc).
med det i baghovet går vi nu et skridt videre i vores preload funktion og vil vise vores bruger hvor meget der er loadet.
Vi har har i forvejen i vores flash lavet et dynamisk tekst felt med instance navn "loading_txt" . deri vil vi vise vores procent der er loadet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function preloadContent() {
 // Variabler
 var bl;
 var bt; 
 var pc;
 
 this.onEnterFrame = function() {
 // Sætter variable bl til this.getBytesLoaded();
 // Sætter variable bt til this.getBytesTotal();
 // Sætter variable pc til procent tal
 bl = this.getBytesLoaded();
 bt = this.getBytesTotal();
 pc = Math.ceil((bl/bt)*100);
 
 // Vis procent tal på skærmen (i tekstfeltet med instance navnet
 // (loading_txt) mens der loades
 loading_txt.text = pc + " %";
 
 }
}

Nu kan brugen altså se skrevet på skærmen hvor meget af flashen der er loadet, så nu mangler vi blot at finde ud af når det hele er loadet og så afslutte og starte vores flash.

Vi ved hvor meget vores flash fylder i alt (bt) og vi ved hvad der er loadet ind (bl). Så det kun et spørgsmål om en simpel "if" sætning.

Vi skal finde ud af tidspunktet hvor vores flash er større en 10 bytes og den mængde af flashen der er loadet er det sammen som det den fylder i alt. Ergo er loadet færdig. Når den er loadet færdig har vi ikke længere brug for at køre onEnterFrame funktionen mere 31 gange i sekundet, så den sletter vi. Vi kan nu også sikkert afspille vores flash.

Vi har på forhånd lavet en label som vi har kaldt "loaded" , og dertil skal vi gå til og afspille vores flash.

Vores endelige preload kode ser nu således ud

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
stop();
 
function preloadContent() {
 // Variabler
 var bl;
 var bt; 
 var pc;
 
 this.onEnterFrame = function() {
 // Sætter variable bl til this.getBytesLoaded();
 // Sætter variable bt til this.getBytesTotal();
 // Sætter variable pc til procent tal
 bl = this.getBytesLoaded();
 bt = this.getBytesTotal();
 pc = Math.ceil((bl/bt)*100);
 
 // Vis procent tal på skærmen (i tekstfeltet med instance navnet
 // (loading_txt) mens der loades
 loading_txt.text = pc + " %";
 
 // Når bytes loaded er mere end 10 bytes og bytes loaded
 // er det samme som bytes total, Delete this.onEnterFrame, og hop
 // hen og afspil LABEL "loaded".
 if (bl > 10 && bl == bt) {
 delete this.onEnterFrame;
 gotoAndPlay("loaded");
 }
 }
}
 
// kør preloaderen
preloadContent();

den sidste linie i preloaderen preloadContent(); kalder vores preload funktion.