Beklager, du har ikke den krævede version af Flash Player. Du kan hente den fra http://www.adobe.com/go/getflash/

<script type="text/javascript">


</script>

Intro

Som sagt er motivationen til denne tutorial at komme lidt ind på forskelle fra ActionScript 2 til ActionScript 3. Forskelle som nogen gange kan skræmme folk fra at tage skridtet til at code ActionScript 3.
Håbet med denne tutorial er at bevise at ActionScript 3 slet ikke er farlig og faktisk, "synes jeg", lettere og mere logisk end de foregående versioner.

I eksemplet her skal vi lave ovenstående analog ur med sekund, minut og time viser. Uret kan ligeledes fortælle når det er nat og dag.

Opret en ny ActionScript 3.0 flash fil

Den første nye ting man skal huske når man arbejder med ActionScript 3.0 er at man skal huske at vælge "Flash File (ActionScript 3.0)" når man opretter et nyt Flash document (.Fla):

Lav de grafiske symboler

Det næste skridt har intet med ActionScript at gøre men er her hvor du kan få lov til at være kreativ.
Vi skal have lavet følgene:

  1. en sekundviser
  2. en minutviser
  3. en timeviser
  4. grafik til udformningen at selve uret
  5. en holder til alle urets dele
  6. en dag animation
  7. en nat animation
  8. et tekstfelt til at skrive om det er dag eller nat
  9. en holder til nat og dag animationerne og tekstfeltet

Mit Library ser således ud i den færdige flash fil:
De to pile er blot for at vise hvilke MovieClips der er "containere/Holdere" for de to Objecter vi skal lave. Uret og NatOgDag.

Design uret

Du starter med at oprette et nyt MovieClip og giver det navnet "clockObject"

Dernæst tegner vi selve uret (ikke visere) dvs cirklerne og glow reflektionen.

Jeg har med vilje lavet de forskellige grafik elementer i hvert sit lag, både for at holde bedre overblik, men også fordi at viserne skal ligge under "glow" og "circle on top" laget.

Design viserne

Med selve uret designet kan vi nu kaste os over viserne.
Vi vi kaster blikket tilbage på Screen dumpet ovenstående at Library kan vi se at vi skal have lavet 3 MovieClips, ét til hver viser.
Lav et nyt lag ovenover "circle on bottom" laget, og lås de andre lag så du ikke kommer til at vælge det grafik der ligger i de lag ved et uheld.

Tegn nu time viseren med Rectangle Tool og sørg for at den er 4 pixel bred og 50 pixel høj (du kan skrive disse mål nede i properties panelet når du markerer din vector shape). Dernæst skal vi have alignet viseren, og det kan du gøre ved hjælp af Align Tool tool som du finder oppe i "Window" menuen.

Du mangler nu blot at konvertere denne shape til et MovieClip så er viseren færdig. Sørg for at din shape er markeret, og vælg så "Modify-> Convert to Symbol". VIGTIGT: sørg for at MovieClip'ets Registration er som vist på nedenstående screen dump. Giv det navnet "hour".

På samme måde laver du nu de 2 andre visere; "second" og "minute".
"minute" viseren er 2 pixel bred og 60 pixel høj. "second" viseren er 2 pixel bred og 70 pixel høj.

Når du har lavet alle visere, kan du give dem en DropShadow Filter effekt for at give lidt dybde. (leg med de forskellige settings på filteret, eller se mine settings i de medfølgende filer)

Du er nu færdig med at lave grafikken til vores "clockObject"
For en god ordens skyld så opret en mappe i Library og put alle MovieClips i denne, Navngiv derefter mappen "clock".

Nat og Dag animationerne

Vi vil gerne kunne visualisere at det enten er nat eller dag. Det gør vi ved at lave 2 animationer som vi gemmer i hvert deres MovieClip. hvis vi igen lige kaster et blik tilbage på vores screen dump af det endelige library, kan vi se at der er et "dayAnimation" og et "nightAnimation" MovieClip.
Start med at oprette et nyt MovieClip og giv det navnet "dayAnimation".

Inde i dette MovieClip opretter du nu 2 lag. Ét til din animation, og ét til ActionScript som du låser, for ikke at komme til at placere grafik elementer der ved et uheld. I Animations laget tegner du nu en hvid firkantet vector rektangel som fylder hele scenen, som i vores Flash fil er 630 pixel bred og 300 pixel høj. Dette rektangel placeres i koordinatet x: 0.0 og y: 0.0.
Stadigvæk i animations laget, går du nu til frame 30 og indsætter et keyframe der, og ved at højre klikke et sted mellem de 2 frames, skal du vælge "create shape tween". Nu kan du i frame 1 give dit vector shape en alpha på 0%, og i frame 30 en alpha på 75%.
Det eneste der nu mangler er at du i ActionScript lagets frame 30 åbner script editoren og skriver:
stop();
Det færdige "dayAnimation" MovieClip skal se ud som følgene screen dump:

På samme måde laver "nightAnimation" MovieClip men tegner istedet en sort vector rektangel.

Night And Day Objectet

Nu da vi har fået lavet vores nat og dag animationer skal vi have lavet vores "nightAndDayObject".
Start med at oprette et MovieClip, giv det navnet "nightAndDayObject" og tilføj følgende lag:

  1. ActionScript
  2. Labels
  3. Text
  4. Graphic

Dernæst tilføj keyframes (i frame 10 og 20) så dit "nightAndDayObject" MovieClip ligner følgende: (viderefør med almindelige frames helt til frame 30)

Vi ligger ud med at lave frame labels i frame 10 og 20 i Labels laget. Marker frame 10 og gå ned i Properties panelet og skriv "night":

På samme måde laver du et label i frame 20 der hedder "day".

Du skal betragte frame labels som en slags tilstande/states

Det vil sige at dit "nightAndDayObject" nu har 2 tilstande/states det kan komme i; "night" eller "day".

I ActionScript laget's frame 1, 10 og 20 åbner du Actions panelet og tilføjer:
stop();
Derved sørger vi for at playhead'et ikke kører videre.

I Graphic laget's frame 10, trækker du dit "nightAnimation" MovieClip'et ind og søger for at placere det fint i koordinatet 0.0. I frame 20 trækker du "dayAnimation" MovieClip'et ind og placerer det 0.0.

I Text laget's frame 1, skal du lavet et dynamisk TextField og give det et instance navn "display". Placer det i koordinatet x:15 - y:15
Jeg har brugt Font "Arial", hvid, og Size 24.

Dit "nightAndDayObject" MovieClip skulle nu gerne se således ud:

Lige for at opsumere så har vi netop lavet hånd arbejdet i vores "nightAndDayObject". Vi har sørget for at playhead'et ikke suser afsted ved at lave "stop()" i ActionScript laget. Vi har lavet to labels (tilstande/states) i vores Labels lag. Vi har placeret Vores "nightAnimation" MovieClip i Graphic laget, og sjovt nok i samme frame hvor vi har vores "night" label. Ligeledes har vi placeret vores "dayAnimation" MovieClip i samme frame hvor vi har vores "day" label. Dvs hvis vi hopper til "nightAndDayObject"'s "night" tilstand/state så bliver vores "nightAnimation" afspillet, og hvis vi hopper til "day" tilstand/state så bliver vores "dayAnimation" afspillet.
Med det sagt mangler vi blot at lave lidt ActionScript 3.0 der skal kunne klare dette for os.
Gå til 1 frame i ActionScript laget (stadig inde i "nightAndDayObject" MovieClippet) og tilføg følgende funktion:

1
2
3
4
5
function setDayTime(value:String):void
{
  display.text = "it's " + value + " time";
  gotoAndStop(value);
}

Du har nu givet vores "nightAndDayObject" en metode der sørger for at skrive en tekst i vores TextField, og hopper til det framelabel(tilstand/state) vi sender med ind i funktionen.

det eneste der i ovenstående funktion er anderledes i ActionScript 3.0 end ActionScript 2.0 er at void staves med småt hvor det i ActionScript 2.0 var stavet med stort "V":

1
2
3
4
5
6
7
8
9
10
11
12
13
// ACTIONSCRIPT 2.0
function setDayTime(value:String):Void
{
  display.text = "it's " + value + " time";
  gotoAndStop(value);
}
 
// ACTIONSCRIPT 3.0
function setDayTime(value:String):void
{
  display.text = "it's " + value + " time";
  gotoAndStop(value);
}

Det var jo ikke så farligt igen Smile
selve ordet "void" betyder bare at funktionen ikke retunerer noget.
Den samlede kode for frame 1 i det færdige "nightAndDayObject" skulle nu gerne se således ud:

Få uret til at slå

Med "nightAndDayObject"'et lavet færdigt kan vi nu kaste os over at gøre uret levende.
Gå ind i "clockObject" MovieClippet og start med at lave et nyt lag til vores ActionScript:

Inden vi begynder at kode skal vi lige ha givet vores visere nogle instance navne så vi kan snakke sammen med dem med kode:
Marker "second" MovieClippet og giv det navnet "second". Marker "minute" MovieClippet og giv det navnet "minute". Marker "hour" MovieClippet og giv det navnet "hour". (lås alle de andre lag end det hvor du vil vælge noget)

Nu er vi klar til at skrive vores ActionScript 3.0, så stram livremmen og ret ryggen for nu går det løs Smile
I Vores ActionScript lag vælger du frame 1 og åbner script panelet

Først kommer den samlede kode til vores "clockObject". Bare rolig vi skal nok "brække" det hele ud i mindre bider. Koden er også grundigt kommenteret.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/************************************************************
Variabler
************************************************************/
// Variabel der bestemmer hvornår natte timen starter.
var nightTimeBegin:uint = 20;
// Variabel der bestemmer hvornår dag timen starter.
var dayTimeBegin:uint = 6;
// Variable der holder styr på om nat er "slået" til eller fra.
var isNight:Boolean;
// Variable der holder styr på om natten har skiftet.
var hasNightChanged:Boolean = false;
// Variable der holder styr på om dagen har skiftet.
var hasDayChanged:Boolean = false;
 
// Vi laver et Timer Object som fyrer et Event af hvert sekund (1000 millisekunder = 1 sekund)
// dette Object gemmer vi en variable vi kalder "ticker"
var ticker:Timer = new Timer(1000);
 
/************************************************************
Add Event LIsteners
************************************************************/
// Vi lytter efter et Event af typen "Timer" på vores "ticker" variabel. Når vi hører dette Event
// kalder vi en funktion vi kalder for "tickerHander".
ticker.addEventListener(TimerEvent.TIMER, tickerHandler);
 
/************************************************************
Event Handler funktion
************************************************************/
// Vores funktion der kalder 1 gang i sekundet.
function tickerHandler(event:TimerEvent):void
{
  // Vi laver et nyt Data Object og gemmer det i en lokal variabel vi kaler for "clockTime".
  var clockTime:Date = new Date();
  // Vi gemmer vores sekund i en lokal variabel vi kalder for "seconds".
  var seconds:uint = clockTime.getSeconds();
  // Vi gemmer vores minut i en lokal variabel vi kalder for "minutes".
  var minutes:uint = clockTime.getMinutes();
  // Vi gemmer vores time i en lokal variabel vi kalder for "hours".
  var hours:uint = clockTime.getHours();
 
  // Her roterer vi sekund viseren.
  second.rotation = (seconds * 6);
  // Her roterer vi minut viseren.
  minute.rotation = (minutes * 6);
  // Her roterer vi time viseren.
  hour.rotation = (hours * 30) + (minutes * 0.5);
 
  // Her tester vi på om det er nat eller dag.
  // Hvis "hours" er større en "natTime"
  if(hours >= nightTimeBegin || hours < dayTimeBegin)
    isNight = true;
  else
    isNight = false;
 
  //
  if(isNight && !hasNightChanged)
  {
    dispatchEvent(new Event("night"));
    hasNightChanged = true;
    hasDayChanged = false;
  }
 
  if(!isNight && !hasDayChanged)
  {
    dispatchEvent(new Event("day"));
    hasNightChanged = false;
    hasDayChanged = true;
  }
}
 
/************************************************************
Initialize
************************************************************/
 
// Vi kalder funktionen tickerHandler for at stille uret med det samme uden at vente 1 sekund.
// Fordi vores funktion forventer at få et Event af typen TimerEvent med, kan vi omgås dette ved
// at sende null værdi med ind.
tickerHandler(null);
 
// Vi starter vores Timer ved at kalde metoden start() på vores "ticker" variabel.
ticker.start();

Det var lidt af en mundfuld, men det er egentlig ganske simpelt når vi nu begynder at bryde det lidt ud.
Lad os starte med at kikke lidt på de variabler vores "clockObject" får tildelt.

1
2
3
4
5
6
var nightTimeBegin:uint = 20;
var dayTimeBegin:uint = 6;
var isNight:Boolean;
var hasNightChanged:Boolean = false;
var hasDayChanged:Boolean = false;
var ticker = new Timer(1000);

nightTimeBegin og dayTimeBegin variablerne

Disse variablers formål er at definere de timer(fx 20 = klokken otte om aftenen) hvor vi gerne vil have at nat og dag skifter.
Altid når man opretter variabler, fortæller vi altid hvilken type variablen er. "nightTimeBegin" og "dayTimeBegin" variablerne er af typen uint som i korte træk betyder unsigned integer og må kun indeholde kun positive tal. I og med at urets 24 timer ikke er negative giver det mening at bruge uint som datatype på disse variabler.

isNight, hasNightChanged og hasDayChanged variablerne

Disse variablers formål er at holde styr på ting. Fx holder "isNight" styr på om det er nat eller dag ud fra en simpel matematisk udregning som vi kommer ind på senere.
Disse variablers datatype er af typen Boolean som kun indeholde enten true eller false altså Sandt eller falsk.
Når man laver variabler der er af typen Boolean er det en god idé at give dem et navne det er "ledene". Fx vores variabel "isNight"("er det nat")
I vores "clockObject" vil vi gerne holde styr på følgende:

  • er det nat? = isNight
  • har natten skiftet? = hasNightChanged
  • har dagen skiftet? = hasDayChanged

ticker variablen

Denne variabel er en reference til et Timer Object. Denne er ny i ActionScript 3.0

Vi opretter et nyt Timer Object ved at bruge "new":
var ticker:Timer = new Timer(1000);
Det nye Timer Object gemmer vi så i variablen "ticker" således at vi kan tilgå det senere, og vi fortæller at denne variabel er af typen Timer:
var ticker:Timer = new Timer(1000);

Kort fortalt kan et Timer Object fyrre et Event af enten kontinuerligt eller "x" antal gange:

1
2
3
4
5
6
7
// bliver kørt én gang.
 
var tickerOnce:Timer = new Timer(1000, 1);
// bliver kørt to gange.
var tickerTwice:Timer = new Timer(1000, 2);
// kører hele tiden.
var tickerInfinitely:Timer = new Timer(1000);

Hov, det jo smart! - vi skal lave et ur der tikker hvert sekund, mon ikke vi kunne bruge et Timer Object Smile Det er lige det vi kan, og gør. Vi opretter et Timer Object og gemmer det i en Variabel, fortæller at den skal køre hvert sekund ( 1000 millisekunder = 1 sekund ) og alt sammen i én linie kode.
var ticker:Timer = new Timer(1000);
Med vores "ticker" variabel oprettet har vi nu et Timer Object som vi har fortalt skal køre hvert sekund. Vi har endnu ikke startet det endnu eller fortalt hvad der skal ske når det kører.

Det vi skal til nu er total nyt for ActionScript 3.0 og super smart og noget man slet ikke kommer uden om. Det jeg snakker om er Event Systemet. Lad os springe ud i det, for jeg vil ikke bruge en roman på at forklare det i denne tutorial. Event Systemet fortjener sin helt egen gennem (host, flashger).

Vi vi kigger på vores konkrete eksempel med "ticker" variablen.
ticker.addEventListener(TimerEvent.TIMER, tickerHandler);

Her lytter vi efter et Event på vores "ticker" variabel, og vi fortæller at det skal være af typen "TimerEvent.TIMER" (når vores "ticker" kører, som jo er et Timer Object ) og der næst fortæller vi hvilken funktion vi vil kalde når vi "hører" noget fra Timer Objectet.

Lad os kort prøve at gøre det lidt mere jordnært.
Forestil dig at pølsemanden bob kan lave hotdogs, det er det eneste han kan. Ofte i ActionScript 2 ville pølsemanden bob skulle løbe ud til alle dem der gerne ville have en hotdog. fx skulle bob løbe ud til _root.familie_mc.jens_mc.givHotdog(); _root.klassensTime_mc.lone_mc.givHotdog();. Det bliver hurtigt hårdt for pølsemanden bob og han dør tragisk meget und pga ømme knæ Smile
I ActionScript 3.0 ville pølsemanden bob bare nøjes med at sige. "nu er en hotdog klar", "nu er en hotdog klar", "nu er en hotdog klar" og være fuldstændig ligeglad med om nogen ville ha dem. Hvis jens eller lone ville have en hotdog ville de lytte efter hvornår en hotdog var klar og så spise den. I kode kunne det måske se sådan ud:

1
 poelseMandenBob.addEventListener(PoelseMandenBob.HOT_DOG_KLAR, spisHotdog);   

Så i vores "ticker" variable som er af typen "Timer" er vi så heldige at Timer fortæller ligesom pølsemanden bob, at "nu er den tid du har sagt der skal gå gået", "nu er den tid du har sagt der skal gå gået", "nu er den tid du har sagt der skal gå gået" ( i vores tilfælde 1 sekund )
Det kan vi så lytte efter ved at sige:
ticker.addEventListener(TimerEvent.TIMER, tickerHandler);
Her fortæller vi at når vi "hører" det, vil vi gerne kalde funktionen "tickerHandler", og det er i den funktion alt udregningen til uret ligger i.

Udregning at urets bevægelser

For at få vores ur til at bevæge sig er vi nødt til at udregne visernes grader i forhold til den aktuelle tid. Vi kan få fat i den aktuelle tid ved at bruge Date Klassen.

Hvis vi ser nærmere på vores funktion der bliver kaldt hvert sekund, kan vi se at vi opretter et instans af Date Objectet og gemmer det i en lokal variabel vi kalder for "clockTime". På dette Date Object kan vi nu få en masse information om det aktuelle sekund, minut og time. Det kan vi så omregne til grader via lidt matematik, og derefter skal vi blot roterer vores visere derefter.
Dette ser således ud i vores kode:

// Vi laver et nyt Data Object og gemmer det i en lokal variabel vi kaler for "clockTime".
var clockTime:Date = new Date();
// Vi gemmer vores sekund i en lokal variabel vi kalder for "seconds".

var seconds:uint = clockTime.getSeconds();
// Vi gemmer vores minut i en lokal variabel vi kalder for "minutes".
var minutes:uint = clockTime.getMinutes();
// Vi gemmer vores time i en lokal variabel vi kalder for "hours".
var hours:uint = clockTime.getHours();

// Her roterer vi sekund viseren.
second.rotation = (seconds * 6);
// Her roterer vi minut viseren.
minute.rotation = (minutes * 6);
// Her roterer vi time viseren.
hour.rotation = (hours * 30) + (minutes * 0.5);


I ActionScript 2.0 roterede man et MovieClip ved at sige "_rotation". I ActionScript 3.0 bruger man blot "rotation".

1
2
3
4
5
// ActionScript 2.0
second._rotation = (seconds * 6);
 
// ActionScript 3.0
second.rotation = (seconds * 6);

Det var heller ikke så farligt endda Smile
Nu skal vi så tjekke om det er nat og dag ud fra vores pre-definerede variabler "nightTimeBegin" og "dayTimeBegin".
Dette ser således ud:

1
2
3
4
5
// Hvis "hours" er større en "natTime"
  if(hours >= nightTimeBegin || hours < dayTimeBegin)
    isNight = true;
  else
    isNight = false;

Her siger vi:
Hvis (if) "hours", som er den aktuelle time som vi fik ud fra vores Date Object, er større eller ligmed "nightTimeBegin", eller hvis hours er mindre en "dayTimeBegin" så må det være nat og vi sætter vores "isNight" variable til at vaære true. Hvis ikke (else) så må det jo være dag, og vi sætter vores "isNight" til false.

Nu ved vi så om det er nat eller day, og så kan vi fortælle at det enten er nat eller dag, ligesom pølsemanden bob Smile
Måden man gør det på er ved at dispatche et Event.
Inden vi gør dette skal vi først lige tjekke om det er nat eller dag og om natten er skiftet eller om dagen er skiftet.
Husk på at vi kører dette hvert eneste sekund, og vi vil kun fortælle at det er nat eller dag én gang. Så når vi fx har fortalt at det er nat, sætter vi vores "hasNightChanged" til true og "hasDayChanged" til false.
Dette ser således ud:

1
2
3
4
5
6
7
8
9
10
11
12
13
if(isNight && !hasNightChanged)
  {
    dispatchEvent(new Event("night"));
    hasNightChanged = true;
    hasDayChanged = false;
  }
 
  if(!isNight && !hasDayChanged)
  {
    dispatchEvent(new Event("day"));
    hasNightChanged = false;
    hasDayChanged = true;
  }

Event dispatching er nyt i ActionScript 3.0 og er som sagt en del af ActionScript 3.0's smarte Event System.
I ovenstående kode "dispatcher" vi 2 Events. Hvis det er nat, og natten ikke har skiftet (isNight && !hasNightChanged) så dispatcher vi et Event af typen "night". Hvis det er dag, og dagen ikke har skiftet (!isNight && !hasDayChanged) så dispatcher vi et Event af typen "dag".
Vores samlede "tickerHandler" funktion ser således ud i sin fulde ukommenteret længde:

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
function tickerHandler(event:TimerEvent):void
{
  var clockTime:Date = new Date();
  var seconds:uint = clockTime.getSeconds();
  var minutes:uint = clockTime.getMinutes();
  var hours:uint = clockTime.getHours();
 
  second.rotation = (seconds * 6);
  minute.rotation = (minutes * 6);
  hour.rotation = (hours * 30) + (minutes * 0.5);
 
  if(hours >= nightTimeBegin || hours < dayTimeBegin)
    isNight = true;
  else
    isNight = false;
 
  if(isNight && !hasNightChanged)
  {
    dispatchEvent(new Event("night"));
    hasNightChanged = true;
    hasDayChanged = false;
  }
 
  if(!isNight && !hasDayChanged)
  {
    dispatchEvent(new Event("day"));
    hasNightChanged = false;
    hasDayChanged = true;
  }
}

Nu mangler vi egentlig kun 2 små ting i vores "clockObject" og det er at kalde "tickerHandler" funktion en gang med det samme fordi vi vil ikke vente 1 sekund inden viserne roterer på plads. Derefter vil vi starte vores Timer
Det ser således ud i vores kode:

1
2
tickerHandler(null);
ticker.start();

Vores "clockObject" er hermed færdig og klar til brug. Husk på at når vi skifter til dag eller nat fortæller vi kun at vi har skiftet (dispatcher Event)

Med vores to MovieClip's, "nightAndDayObject" og "clockObject" færdige, kan vi nu færdiggøre vores lille fine applikation.

Den sidste sammenkobling

Gå ud i roden til "Scene 1" og lav 4 layers:

  1. bg - her tegner du en baggrund
  2. night and day - her her placerer du "nightAndDayObject"
  3. clock - her her placerer du "clockObject"
  4. ActionScript - her kommer den sidste kode

Giv "nightAndDayObject" MovieClippet et instance navn "nightAndDay" og giv "clockObject" MovieClippet et instance navn clock.

Gå i første frame i "ActionScript" laget og åben ActionScript editoren.
Her skal vi nu samle det sidste så vores applikation er færdig.
Vi ved at vores "clockObject" som vi har givet instance navnet "clock" fortæller når det er nat og når det er dag, ligesom pølsemanden bob fortalte når han havde en hotdog færdig. Og vi ved at vores "nightAndDayObject" som vi har givet instance navnet "nightAndDay" har en metode der kan sætte dets tilstand/state til nat og dag. Så vi vil lytte efter når "clock" fortæller at det er dag og når "clock" fortæller det er nat". Og når vi hører det vil vi kalde en funktion der kan håndtere det der skal ske.
Så mangler vi egentlig bare at lave vores "nightHandler" og "dayHandler" funktioner.

1
2
3
4
5
6
7
8
9
10
11
clock.addEventListener("night", nightHandler);
clock.addEventListener("day", dayHandler);
 
function nightHandler(event:Event):void {
  nightAndDay.setDayTime("night");
}
function dayHandler(event:Event):void
{
  nightAndDay.setDayTime("day");
}

Tillykke, du har nu lavet et Fint ActionScript 3.0 projekt, og uden du ved det har du endda programmeret Object Orienteret og alle de andre fine busswords som måske har holdt dig fra at springe ud i ActionScript 3.0.

Det fine ved Den måde du har lavet uret på er at nu kan du trække så mange "clockObject" in på scenen som du vil og vupti har du et ur. Hvis du ikke vil gøre noget når uret fortæller at det er nat eller dag så det helt fint, men hvis du gerne vil så skal du bare "lytte" efter det Smile

Held og lykke med det og velkommen til ActionScript 3.0