ActionScript

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
ActionScript
Paradigma multi-paradigma
Verschenen in 1998
Ontworpen door Gary Grossman
Ontwikkeld door Macromedia, Adobe
Huidige versie 3.0 (juni 2006)
Typesysteem statisch, sterk
Implementaties Adobe Flash, Adobe Flex
Beïnvloed door JavaScript, Java, HaXe
Besturingssysteem Multiplatform
Bestandsextensies .as
Portaal  Portaalicoon   Informatica

Actionscript is de scripttaal of programmeertaal van Adobe Flash en Adobe Flex. Deze taal wordt gebruikt om animaties of filmpjes interactief te maken. Er kunnen ook volledige spelletjes of geavanceerde applicaties mee worden gemaakt, waarbij er bijvoorbeeld interactie optreedt met de muis en het toetsenbord. Actionscript is een event-based taal, wat wil zeggen dat alle acties getriggerd worden door events (gebeurtenissen).

Inleiding[bewerken]

Event-driven of event-based programming[bewerken]

Men spreekt bij programmeren van event-based of event-driven programming wanneer de control flow van het programma bepaald wordt door acties, zoals bijvoorbeeld het klikken met de muis, of door berichten van andere programma's/threads.

ECMA-262[bewerken]

ActionScript is gebaseerd op de ECMA-262 (European Computer Manufactureres Association) standaard. Deze standaard is internationaal de standaard voor JavaScript. In de 5e versie van Flash werd een nieuwe syntaxis geïntroduceerd die ervoor zorgde dat ActionScript ging lijken op JavaScript, wat de taal een stuk gemakkelijker (herkenbaarder) maakte voor webontwikkelaars.

Geschiedenis[bewerken]

Actionscript geschiedenis[bewerken]

2000-2003[bewerken]

Flash 4 had een zeer beperkte programmeertaal, "Actions" genaamd. Deze werd verbeterd, en werd meteen de eerste echte versie van Actionscript. Het was ook meteen de eerste versie die invloeden had van JavaScript en de ECMA-262. Dit werd geïntroduceerd samen met Flash player 5. Actionscript kon nu ook ontwikkeld worden in een gewone tekstverwerker, zoals kladblok, in plaats van acties te selecteren uit drop-down menu's, zoals het geval was bij Actions. Met het uitkomen van Flash player 6 werden er niet al te veel wijzigingen doorgevoerd. Er waren enkel kleine veranderingen zoals het toevoegen van de strikt gelijk operator (===) zodat het meer ECMA-262 conform was. Een belangrijk kenmerk van Actionscript 1.0 ten opzichte van latere versies is het gebruik van "loose typing", ofwel zwakke typering. Dit wil zeggen dat variabelen in de code eender welk soort data konden bevatten.

2003-2006[bewerken]

Actionscript 2.0 was een grote verandering voor de taal. De taal werd in gebruik genomen in september 2003, samen met het uitbrengen van Flash player 7. Hoewel de code al meer gericht was op het OOP (objectgeoriënteerd programmeren), werd de code nog altijd naar Actionscript 1.0 bytecode gecompileerd, zodat de code nog compatibel was met Flash player 6.

Met Actionscript 2.0 werd het ook mogelijk voor programmeurs om een vast datatype te binden aan een variabele. Zo kunnen type mismatch fouten gevonden worden tijdens het compileren. Een type mismatch is bijvoorbeeld het toewijzen van een string (stukje tekst) aan een variabele van het type Number.

2006-nu[bewerken]

Actionscript 3.0 werd geïntroduceerd in juni 2006. Het werd uitgebracht samen met Flash player 9. AS 3.0 ging gepaard met een fundamentele herstructurering. Zo fundamenteel zelfs dat de nieuwe Flash player een volledig andere virtuele machine gebruikt. Flash player 9 gebruikt 2 virtuele machines: één VM voor AS 1.0 en AS 2.0 code, en één VM voor AS 3.0.

Flash Player geschiedenis[bewerken]

Flash Player-versie Datum Kenmerken
Flash Player 2 1997 Knoppen, bilbiotheken, tweening, stereo audio.

Er waren enkele basis functies zoals Stop(), GotoAndPlay(), en dergelijke voor de timeline control. [ Note: dit was de eerste versie die vrijgegeven werd onder de naam Macromedia. ]

Flash Player 3 1998 De ‘alpha’-functie werd geïntroduceerd. Deze zorgt ervoor dat je objecten in je Flash-animatie doorschijnend kan maken.

Er werd ook ondersteuning voor MP3 ingebouwd. Het laden van externe .swf files werd ook mogelijk gemaakt.

Flash Player 4 mei 1999 Het streamen van MP3 werd mogelijk gemaakt.

Ook werd motion tweening geïntroduceerd. De eerste echte coding taal, namelijk Actions. Deze ondersteunde zaken zoals variabelen, loops, en andere basis constructies.

Flash Player 5 augustus 2000 De eerste echte versie van Actionscript werd geïntroduceerd. Deze was gebaseerd op ECMAScript. Er was ondersteuning voor Procedural Programming en OOP.
Flash Player 6 maart 2002 Ondersteuning van videostreaming.
Flash Player 7 september 2003 Actionscript 2.0 deed zijn intrede.

Andere nieuwe functies zoals tekst effecten, 3rd party extensies, ...

Flash Player 8 augustus 2005 Filter effects, blending modes, GIF & PNG ondersteuning, bitmap caching, FlashType type rendering, mobile device emulator, beduidend nieuwe video codec(On2 VP6).

Opmerking: In december 2005 werd Macromedia (en dus ook het Flash platform) overgenomen door Adobe Systems.

Flash Player 9 juni 2006 ActionScript Virtual Machine AVM2, ActionScript 3.0
Flash Player 9 update 1 november 2006 (v9.0.28.0, codenaam: "Marvin")

Ondersteuning voor fullscreen mode.

Flash Player 9 update 2 december 2007 (v9.0.115.0, codenaam: "Moviestar")

Ondersteuning voor H.264 video en AAC audio.

Flash Player 10 oktober 2008 (v10.0.12.36, codenaam: "Astro")

3D object transformations, geavanceerde tekst effecten, Speex audio codec, RTMFP ondersteuning(Real Time Media Flow Protocal), verbeterde anti-aliasing engine.

Flash player 10.1 juni 2010 (v10.1.53.64) Global error handling, multi-touch, HTTP streaming, hardware H.264 decoding.
Flash player 10.2 Preview september 2010 Ondersteuning voor 64-bit browsers.

Actionscriptsyntaxis[bewerken]

Datatypes[bewerken]

Hieronder staan enkele van de datatypes die beschikbaar zijn in ActionScript (AS 2.0 en AS 3.0).

ActionScript 2 toplevel datatypes

  • String : een lijst (opsomming) van karakters, zoals bijvoorbeeld "Hello World"
  • Number : elke numerieke waarde
  • Boolean : een bistabiele variabele die ofwel "true" (juist) ofwel "false" (fout) is. Flash zal ook de waarden 1 en 0 accepteren.
  • Object : dit is het datatype waarvan alle complexe data types afgeleid worden. Het laat toe methodes, parameters en andere objecten te groeperen.

ActionScript 2 complexe datatypes (vereisen meer geheugen en processor resources)

  • MovieClip : een creatie in AS die ervoor zorgt dat er gemakkelijk visuele elementen kunnen worden toegevoegd.
  • TextField : een afgeleide van de MovieClip die voor een tekstveld zorgt. Dit tekstveld kan statisch zijn, dynamisch, of kan zelfs input van de gebruiker vereisen.
  • Button : is een afgeleide van de MovieClip. De knop heeft 4 states, namelijk up, over, down en hit. Een korte uitleg over deze states:
    • Up: de knop is ruststand. Er gebeurt niets mee.
    • Over: er wordt met de muisaanwijzer over de knop gegaan.
    • Down: deze state is er wanneer de muis wordt ingedrukt en de muis op de knop staat
    • Hit: dit frame bevat het raakgebied van de button. Dit is de 'hitbox' van de button.
  • Date : zorgt voor toegang tot informatie in verband met tijd
  • Array : dit type zorgt voor de lineaire opslag van data, bijvoorbeeld een reeks getallen.
  • XML : een XML object. Een verwant data type is de XMLNode.
  • Sound
  • NetStream
  • NetConnection
  • MovieClipLoader
  • EventListener

ActionScript 3 primitieve datatypes

  • Boolean : een bistabiele variabele die ofwel "true" (juist) ofwel "false" (fout) is. Flash zal ook de waarden 1 en 0 accepteren.
  • int : een 32-bit integer tussen -2,147,483,648 en 2,147,483,647.
  • Null : dit data type heeft maar één waarde, namelijk "null". Dit is de standaard (default) waarde voor het data type string, en duidt dus op een lege string.
  • Number : dit data type kan integers, unsigned en signed, en floating point nummer voorstellen. Het gebruikt 64-bit double-precision formaat. De waardes kunnen tussen -9,007,199,254,740,992 en 9,007,199,254,740,992 liggen.
  • String : een opeenvolging van 16-bit karakters. De strings worden intern opgeslagen als Unicode karakters, volgende de UTF-16 standaard. Vorige versies van Flash gebruikten de UTF-8 standaard.
  • uint : unsigned integer data type.Dit type is een 32-bit unsigned integer die tussen 0 en 4,294,967,295 ligt.
  • void : Dit data type bevat maar 1 waarde, namelijk "undefined". Void wordt bijvoorbeeld gebruikt voor het aanduiden dat een functie geen waarde retourneert.

ActionScript 3 complexe datatypes

  • Vector : een variant op de array. Vectoren zijn meer type-safe (bestand tegen type mismatches), maar zijn ook veel beter voor de prestaties. Ze zijn wel enkel beschikbaar vanaf Flash player 10.

Voorbeelden[bewerken]

   //Voorbeeld van een functie in Actionscript
   //Declaratie van een functie die geen waarde retourneert (void)
 
   public function zegHallo():void {
      trace("Hello world");
   }
 
   //Voorbeeld van een functie in Actionscript
   //Declaratie van een functie die de input string retourneert
 
   public function retourneer(input:String):String {
      return input;
   }
 
   //Voorbeeld van het declareren van verschillende types variabelen
 
   var myString:String = new String();
   myString = "Hello world";
 
   var myString2:String = "Hello world2";
 
   var myNumber:Number = 3021;
 
   var myArray = new Array();
   myArray[0] = "Hello"; //Array indexering begint bij 0
   myArray[1] = " ";
   myArray[2] = "World";

Beveiliging[bewerken]

Decompileren[bewerken]

Als je een project maakt in Flash, dan zal je project altijd eerst gecompileerd worden vooraleer het uitgevoerd kan worden. Dit compileren zorgt ervoor dat de code wordt omgezet naar bytecode of machinetaal. Het project wordt zo samengevat in één bestand. Bij Flash is dit bijvoorbeeld een .swf file (swiff file uitgesproken). Er zijn echter programma's beschikbaar die een .swf file terug kunnen omzetten naar hun originele broncode. Sommige programma's slagen hier vrij goed in, terwijl andere een eerder slechte job doen. Dit decompileren houdt zekere risico's in. Zo moet er bijvoorbeeld geen vertrouwelijke informatie zoals wachtwoorden in de code opgeslagen worden aangezien deze gewoon gelezen kunnen worden. Maar er zijn nog problemen: het decompileren legt gewoon de broncode vrij. Dus als iemand een stuk code heeft geschreven dat eigenlijk niet bestemd is voor ieders ogen, dan is er dus een probleem. Zo kunnen gebruikers bepaalde stukken in het programma gaan misbruiken of het onrechtmatig namaken. Dit is uiteraard verboden, maar niet of moeilijk te controleren.

Obfuscators[bewerken]

Het onrechtmatig vrij leggen van de broncode van een project kan zeer lastig zijn. Er zijn echter programma's op de markt die de broncode tijdens of na het compileren onleesbaar proberen te maken en proberen tegen te gaan dat andere programma's de code kunnen decompileren, of de-assembleren.

Zie ook[bewerken]

Referenties[bewerken]