Dauntless
%Europe/Berlin %671 %2005, 16:07
Hier het eerste deel van onze tutorial:
1. Wat is AS 2.0 en waar gebruik je het voor?
AS 2.0 is een programmeertaal. Het is de opvolger van het alom bekende AS 1.0. Je kan deze nieuwe versie van ActionScript gebruiken vanaf Flash MX 2004. Ok, dat is duidelijk, maar wat kunnen we er mee?
Wel, met AS 2.0 kan je je eigen classes schrijven (komt later aan bod). Het geeft je ook meer controle over je applicatie en vooral tijdens het debuggen zijn classes erg handig. Maar niet alleen tijdens het debuggen is het handig. Doordat je met AS 2.0 werkt, moet je gaan nadenken hoe je classes eruit gaan zien, welke taak een classe op zich gaat nemen en hoe classes met elkaar samen gaan werken. (Dit komt nog uitvoerig aan bod) Doordat je zoveel moet nadenken over de structuur van je applicatie, werk je gestructureerder aan je applicatie en zijn fouten makkelijker te achterhalen en te verbeteren. Ook geeft AS 2.0 je de mogelijkheid om modulair te werken. Kort gezegd houd dit in dat je aparte “bouwstenen” (de classes) maakt die ieder een taak op zich nemen. Ieder afzonderlijk stukje is dus niet specifiek gemaakt voor je applicatie. Je kan vaak eerder gemaakte classes hergebruiken. Dit is een groot voordeel van AS 2.0.
Een ander voordeel van AS 2.0 is dat wanneer je een variabele naam verkeerd typt, de flash compiler zegt dat hij een variabele gevonden heeft die niet bestaat. Een ander groot voordeel is dat je kan zeggen van welke soort een bepaalde variabele is. Dat kan door middel van .... Datatypes!
2. Datatypes
Datatypes zorgen er voor dat een variabele van een bepaald type is. Zo heb je bijvoorbeeld de datatypes MovieClip, Array, String, Number, MovieClipLoader, LoadVars, XML, XMLNode, en nog vele anderen!
Het voordeel hiervan is weer te merken tijdens het debuggen van je applicatie. Stel dat je een variabele aangemaakt hebt van het type 'String' en op een bepaald moment probeer je er een getal aan toe te voegen. Dan gaat de flash compiler een error geven:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Type mismatch in assignment statement: found Number where String is required.
myVar = 5;
Total ActionScript Errors: 1 Reported Errors: 1
Dan weet je dat je iets fout getypt hebt, of dat je niet goed nagedacht hebt over de structuur van je applicatie.
Het toekennen van een datatype is heel simpel. In Flash komt het datatype achter de variabele. Dit heet de 'post-colon syntax'.
Een voorbeeld:
var myVar:String;
Nu heb je een variabele aangemaakt van het type 'String' (zonder waarde).
Maar wat als je nu een waarde van een ander type wil toekenen? Bijvoorbeeld: Je laat de user een nummer ingeven in een textbox. De property 'txtVak.text' is een String, maar je wil een Number!
var leeftijd:Number = txtVak.text;
Dit levert een fout op omdat txtVak.text een String is, geen Number. Hoe kan je dit oplossen? Door type casting. Dit heb je waarschijnlijk al wel veel gedaan zonder dat je het wist. Een variabele casten betekent dat je zijn datatype verandert. Het casten werkt zo: var varnaam:Type1 = Type1(Type2);
Om de String uit het tekstvak om te zetten naar een Number doen we het volgende:
var leeftijd:Number = Number(txtVak.text);
Het is niet mogelijk om een variabele van type te veranderen. Maar... Er zijn wel achterdeurtjes ;).
In ActionScript is elke (standaard) classe een subclasse van de classe 'Object'. Dus, wat als we nu een variabele het type 'Object' geven?
var leeftijd:Object = txtVak.text
Dit geeft geen error, omdat String een subclasse is van de classe Object.
De String wordt aan de variabele 'leeftijd' toegekend en de waarde blijft een String.
var leeftijd:Object = txtVak.text
trace("Het type van leeftijd = "+typeof(leeftijd));
//output:
//Het type van leeftijd = string
Een andere manier is door het gebruik van associative array referencing. Associative array referencing is een lange term voor een eenvoudig gebruik. Het is niet echt een achterdeurtje maar eerder een bug. Het Object type gebruiken is perfect legaal, maar wat je nu gaat zien is best vreemd.
Associative array referencing wordt als volgt gebruikt: tijdlijn[var1] = var2; (tijdlijn kan ook een object zijn).
Bijvoorbeeld:
var leeftijd:Number = 16;
this["leeftijd"] = "Dauntless";
Dit geeft géén foutmelding. Op zich is het ook tot op zekere hoogte logisch. De flash compiler kan op voorhand nog niet weten wat voor waarde er tussen de [vierkante haken] komt.
Vergeet niet: Je kan het type van een variabele NIET veranderen! Het type van de 'leeftijd' variabele is immers nog altijd Number!
var leeftijd:Number = 16;
this["leeftijd"] = "Dauntless";
trace(typeof(leeftijd));
this.leeftijd = 10;
trace(typeof(leeftijd));
Hieruit kan je afleiden dat na de tweede toekenning de waarde van de variabele een String is, maar dat het type nog altijd Number is (we krijgen immers geen error bij de derde toekenning). De variabele zelf blijft dus van het type Number, terwijl de waarde van de variabele verandert van Number naar String naar Number. Nu begrijp je denk ik wel dat dit een bug is ?
Nog een laaste opmerking (Dankzij TheDutch):
Je kan een datatype alleen toekennen als je een variabele declareert in de huidige tijdlijn. Een declaratie van een variabele met een datatype moet dus altijd van de vorm:
var varNaam:Datatypezijn.
Je kan dus geen datatype toekennen aan een variabele die je in een ander Object (of MovieClip) aanmaakt.
var ob:Object = new Object();
ob.naam:String = "Dauntless";
Deze code levert namelijk een syntax error op.
Dit was de inleiding AS 2.0. Het is nog kort, maar dit is ook wel een essentiële basis. Als je geen gebruik maakt van datatypes, gebruik je een van de grootste voordelen van AS 2.0 niet. Ik hoop dat het duidelijk was (de meeste dingen kende je misschien al) en dat jullie vol ongeduld op de volgende wachten? ;)
-Roenes en Dauntless
1. Wat is AS 2.0 en waar gebruik je het voor?
AS 2.0 is een programmeertaal. Het is de opvolger van het alom bekende AS 1.0. Je kan deze nieuwe versie van ActionScript gebruiken vanaf Flash MX 2004. Ok, dat is duidelijk, maar wat kunnen we er mee?
Wel, met AS 2.0 kan je je eigen classes schrijven (komt later aan bod). Het geeft je ook meer controle over je applicatie en vooral tijdens het debuggen zijn classes erg handig. Maar niet alleen tijdens het debuggen is het handig. Doordat je met AS 2.0 werkt, moet je gaan nadenken hoe je classes eruit gaan zien, welke taak een classe op zich gaat nemen en hoe classes met elkaar samen gaan werken. (Dit komt nog uitvoerig aan bod) Doordat je zoveel moet nadenken over de structuur van je applicatie, werk je gestructureerder aan je applicatie en zijn fouten makkelijker te achterhalen en te verbeteren. Ook geeft AS 2.0 je de mogelijkheid om modulair te werken. Kort gezegd houd dit in dat je aparte “bouwstenen” (de classes) maakt die ieder een taak op zich nemen. Ieder afzonderlijk stukje is dus niet specifiek gemaakt voor je applicatie. Je kan vaak eerder gemaakte classes hergebruiken. Dit is een groot voordeel van AS 2.0.
Een ander voordeel van AS 2.0 is dat wanneer je een variabele naam verkeerd typt, de flash compiler zegt dat hij een variabele gevonden heeft die niet bestaat. Een ander groot voordeel is dat je kan zeggen van welke soort een bepaalde variabele is. Dat kan door middel van .... Datatypes!
2. Datatypes
Datatypes zorgen er voor dat een variabele van een bepaald type is. Zo heb je bijvoorbeeld de datatypes MovieClip, Array, String, Number, MovieClipLoader, LoadVars, XML, XMLNode, en nog vele anderen!
Het voordeel hiervan is weer te merken tijdens het debuggen van je applicatie. Stel dat je een variabele aangemaakt hebt van het type 'String' en op een bepaald moment probeer je er een getal aan toe te voegen. Dan gaat de flash compiler een error geven:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Type mismatch in assignment statement: found Number where String is required.
myVar = 5;
Total ActionScript Errors: 1 Reported Errors: 1
Dan weet je dat je iets fout getypt hebt, of dat je niet goed nagedacht hebt over de structuur van je applicatie.
Het toekennen van een datatype is heel simpel. In Flash komt het datatype achter de variabele. Dit heet de 'post-colon syntax'.
Een voorbeeld:
var myVar:String;
Nu heb je een variabele aangemaakt van het type 'String' (zonder waarde).
Maar wat als je nu een waarde van een ander type wil toekenen? Bijvoorbeeld: Je laat de user een nummer ingeven in een textbox. De property 'txtVak.text' is een String, maar je wil een Number!
var leeftijd:Number = txtVak.text;
Dit levert een fout op omdat txtVak.text een String is, geen Number. Hoe kan je dit oplossen? Door type casting. Dit heb je waarschijnlijk al wel veel gedaan zonder dat je het wist. Een variabele casten betekent dat je zijn datatype verandert. Het casten werkt zo: var varnaam:Type1 = Type1(Type2);
Om de String uit het tekstvak om te zetten naar een Number doen we het volgende:
var leeftijd:Number = Number(txtVak.text);
Het is niet mogelijk om een variabele van type te veranderen. Maar... Er zijn wel achterdeurtjes ;).
In ActionScript is elke (standaard) classe een subclasse van de classe 'Object'. Dus, wat als we nu een variabele het type 'Object' geven?
var leeftijd:Object = txtVak.text
Dit geeft geen error, omdat String een subclasse is van de classe Object.
De String wordt aan de variabele 'leeftijd' toegekend en de waarde blijft een String.
var leeftijd:Object = txtVak.text
trace("Het type van leeftijd = "+typeof(leeftijd));
//output:
//Het type van leeftijd = string
Een andere manier is door het gebruik van associative array referencing. Associative array referencing is een lange term voor een eenvoudig gebruik. Het is niet echt een achterdeurtje maar eerder een bug. Het Object type gebruiken is perfect legaal, maar wat je nu gaat zien is best vreemd.
Associative array referencing wordt als volgt gebruikt: tijdlijn[var1] = var2; (tijdlijn kan ook een object zijn).
Bijvoorbeeld:
var leeftijd:Number = 16;
this["leeftijd"] = "Dauntless";
Dit geeft géén foutmelding. Op zich is het ook tot op zekere hoogte logisch. De flash compiler kan op voorhand nog niet weten wat voor waarde er tussen de [vierkante haken] komt.
Vergeet niet: Je kan het type van een variabele NIET veranderen! Het type van de 'leeftijd' variabele is immers nog altijd Number!
var leeftijd:Number = 16;
this["leeftijd"] = "Dauntless";
trace(typeof(leeftijd));
this.leeftijd = 10;
trace(typeof(leeftijd));
Hieruit kan je afleiden dat na de tweede toekenning de waarde van de variabele een String is, maar dat het type nog altijd Number is (we krijgen immers geen error bij de derde toekenning). De variabele zelf blijft dus van het type Number, terwijl de waarde van de variabele verandert van Number naar String naar Number. Nu begrijp je denk ik wel dat dit een bug is ?
Nog een laaste opmerking (Dankzij TheDutch):
Je kan een datatype alleen toekennen als je een variabele declareert in de huidige tijdlijn. Een declaratie van een variabele met een datatype moet dus altijd van de vorm:
var varNaam:Datatypezijn.
Je kan dus geen datatype toekennen aan een variabele die je in een ander Object (of MovieClip) aanmaakt.
var ob:Object = new Object();
ob.naam:String = "Dauntless";
Deze code levert namelijk een syntax error op.
Dit was de inleiding AS 2.0. Het is nog kort, maar dit is ook wel een essentiële basis. Als je geen gebruik maakt van datatypes, gebruik je een van de grootste voordelen van AS 2.0 niet. Ik hoop dat het duidelijk was (de meeste dingen kende je misschien al) en dat jullie vol ongeduld op de volgende wachten? ;)
-Roenes en Dauntless