Link i ActionScript 3

26 november, 2009 admin Ingen kommentarer

Vi vil nu oprette et link til en webadresse, således, at når man klikker på en knap, så åbnes linket i en browser. Først skal vi have oprettet knappen, og derefter koden.
Jeg tager udgangspunkt i et link til sideone.dk, og vil derfor først importere logoet og lave det til en knap.

1. Importer billedet ’sideone_logo.gif’ til Stagen. Konverter den til en knap med navnet ’btnLink’
2. Lav en Over-tilstand på knappen, hvor du f.eks. laver knappen en anelse større med Free Transform Tool.
3. Gå ud på Main Timeline, marker knappen og giv den instance name ’link_Btn’.

Nu skal vi have lavet koden til knappen, så man navigerer til www.sideone.dk, når man klikker på den. Vi skal altså have oprettet en eventlistener og en funktion, som skal indeholde en navigateToURL-funktionen, hvis job er at navigere til en URL, som er lagret i en variabel.

4. Omdøb det eksisterende lag til ’link’ og opret et nyt lag ’actions’, hvor du i Actions Panel skriver:

link_btn.addEventListener(MouseEvent.CLICK, gotoLink);

function gotoLink (e:MouseEvent): void {
var link:URLRequest = new URLRequest(”http://www.sideone.dk”);
navigateToURL(link, “_blank”);
}

5. Test om linket virker

Først oprettes en variabel af klassen URLRequest. Denne variabel skal indeholde linket ”http://www.sideone.dk”. Derefter sørger navigateToURL-funktionen for at navigere hen til denne URL. ”_blank” betyder at der åbnes et nyt vindue. Hvis du i stedet skriver ”_parent”, så vil linket åbnes i samme vindue.
Bemærk at du godt kan linke til andre filtyper, som kan åbnes af en browser, og du kan også godt linke til filer, som ligger relativt til forhold til den SWF-fil, dit link ligger i. Hvis du f.eks. skriver:

var link:URLRequest = new URLRequest(”highlap.swf”);

Så vil SWF-filen ’highlap.swf’, som skal ligge i samme mappe som SWF-filen med linket, åbne i en browser. Ligeledes hvis du skriver:

var link:URLRequest = new URLRequest(”sideone_logo.gif”);
Så vil logoet åbnes i en browser, da browsere både kan visse web-venlige billeder og SWF-filer.

Categories: ActionScript 3, Flash Tags: ,

Preloader

12 november, 2009 admin Ingen kommentarer

Vi vil lave en preloader, som viser brugeren hvor meget af Flash filmen som er downloadet. Da nogle SWF-filer kan være tunge, er det en god service, så brugeren har en ide om, hvor lang tid det cirka tager.
For at lave en preloader er det mest hensigtsmæssigt at tage udgangspunkt i en allerede oprettet Flash film, eller oprette en film med et eller flere store billeder, da der skal være noget at downloade.

1. Åbn en ny Flash film, omdøb laget til ’indhold’, indsæt en keyframe i frame 2 og importer et billede til Stagen. Skaler billedet, så det passer til Stagen.

26-11-2009 08-28-40

Nu skal vi have lavet teksten til preloaderen. Der skal både være en statisk hjælpetekst og en dynamisk tekst, som skal indeholde, hvor mange %, der er downloaded.

2. Placer markøren i frame 1 og indsæt på Stagen et statisk tekstfelt med teksten ’…::: LOADING’.

3. Indsæt til venstre for denne tekst et dynamisk tekstfelt med teksten ’0 %’. Giv dette felt instance name ’preloader_txt’.

26-11-2009 08-33-44
Egentlig behøver vi ikke skrive ’0 %’ i feltet, da det skal opdateres dynamisk, men vi bruger det bare så vi kan finde tekstfeltet.
Nu skal vi have skrevet koden. Vi skal bruge informationer om, hvor meget der er loaded, og hvor meget Flash filmen fylder i alt. Dette findes i henholdsvis properties loaderInfo.bytesLoaded og loaderInfo.bytesTotal. For at få det i % skal disse to tal divideres og ganges med 100.

4. Indsæt et lag ’actions’ og åbn frame 1 og skriv i Actions Panel:

stop();
addEventListener(Event.ENTER_FRAME, opdaterLoader);

function opdaterLoader(e:Event):void {
var procent: int = int(loaderInfo.bytesLoaded/loaderInfo.bytesTotal*100);
if (procent == 100) {
removeEventListener(Event.ENTER_FRAME, opdaterLoader);
nextFrame();
}
else {
preloader_txt.text = procent + ” %”;
}
}

Koden består først af en stop-method for at undgå at filmen går videre af sig selv. Dernæst en eventlistener, som hele tiden kalder funktionen ’opdaterLoader’ så længe vi er i denne frame.
Funktionen ’opdaterloader’ opretter først en variabel som en heltals-datatype (int). Denne variabel tildeles værdien af loaderInfo.bytesLoaded/loaderInfo.bytesTotal*100. Dette skulle gerne blive det hele antal % der er downloaded.

Dernæst undersøges om procent = 100, hvis det er tilfældet, skal Flash filmen gå videre til næste frame (nextFrame), samtidig med at eventlisteneren fjernes, da der ikke længere er brug for den.
Hvis det ikke er tilfældet, dvs. hvis der stadig mangler at blive downloadet noget, så sættes det dynamiske tekstfelt lig med variablen ’procent’ efterfulgt af strengen ” %”.

5. Afspil din Flash film.

Umiddelbart ser du ikke din preloader, men Flash filmen hopper straks til frame 2 med billedet. Det skyldes at det går hurtigt med at downloade filmen, især når den ligger lokalt. For at undersøge, om preloaderen virker, kan du simulere din download. Først sættes hastigheden, og dernæst simuleres downloadningen.

6. I test mode vælg View > Download Settings > T1

26-11-2009 08-35-34

7. Vælg herefter View > Simulate Download

26-11-2009 08-33-44
Nu skulle filmen gerne virke.

For at sætte prikken over i’et vil vi også gerne have lidt grafik på vores preloader. Det skal bestå af et aflangt rektangel, som bliver fyldt op, men filmen hentes.

8. Træk i indholdslaget under teksten i frame 1 et rektangel. Vælg både en stroke color og en fill color Vælg evt. en gradient for fill color.

9. Marker nu fyldet ved at klikke på det én gang med Selection Tool og konverter det til et MovieClip med navnet mcPreloaderFyld. Giv det instance name ’preloaderFyld_mc’.

10. Marker nu kanten (du kan evt. trække fyldet til side først) og konverter det til et MovieClip med navnet mcPreloaderKant.

11. Sørg til sidst for at fyldet er placeret præcist ovenpå kanten.

Grunden til, at vi konverterer grafikken til MovieClips er, at vi skal styren den via ActionScript. Det kan vi ikke, hvis vi kun har at gøre med shapes.

Nu skal vi have skrevet koden, så grafikken opdateres. Det er faktisk lettere end du tror. Vi kan nemlig bruge propertyen ’scaleX’ på vores movieClip. ScaleX-propertyen går fra 0 (ingenting) til 1 (normal størrelse. ScaleX skal altså sættes lige med variablen ’procent’ / 100, da ’procent’ går fra 0 til 100.

12. Åbn din eksisterende kode og tilføj følgende linje til sidst i funktionen ’opdaterLoader’:

preloaderFyld_mc.scaleX = procent/100;

26-11-2009 08-37-47
13. Simuler nu din Flash film, som gerne skulle ligne nedenstående billede indtil den er færdig med at loade.

26-11-2009 08-38-30