Object Oriented Programming as3



Dovnload 52.65 Kb.
Datum27.09.2016
Grootte52.65 Kb.

Object Oriented Programming - AS3




1. Variabelen


Een variabele is een stuk geheugen met een naam.

var henk:Int = new Int();

Een variabele heeft een type. Het type bepaalt wat voor soort variabele het is.

Een variabele heeft ook een waarde. De waarde staat vaak achter het = teken, zoals in het onderstaande voorbeeld 5 de waarde is die in de variabele henk wordt gestopt.

var henk:Int = 5;
Een aantal veel gebruikte typen variabelen in AS3:

Int: Integer. Een geheel getal van 32 bits (dus maximaal ongeveer 4,2 miljard)

Number: Een getal met decimalen

Uint: Nog een getal, vaak gebruikt voor kleuren (notatie: 0xFFFFFF- RGB)

String: Tekst. Strings staan tussen aanhalingstekens.

var henk:String = “wat is omhoog gek?”;

Boolean: Een variabele ie twee waarden aan kan nemen. True of False.

var henk:Bool = true;

Array: Een array kan meerdere objecten in één variabele stoppen. Later meer hierover.

var henk:Array = new Array[];


Private vs. public variabelen

Public variabelen zijn vanuit de gehele klasse toegangkelijk. Private variabelen (variabelen zijn ook private als er niets voor staat) zijn alleen beschikbaar in de functie waarin je deze declareert. Met declareren wordt bedoeld dat de variabele wordt aangemaakt. Wat er dan gebeurt is dat er een stuk geheugen wordt gereserveerd voor de waarden die erin gestopt worden.


public class Main extends Sprite

{

public function Main():void

{

var getal1: int = 5;

maal pi maal getal1

var getal2: int = Math.PI * 2 * getal1;

var getal3: Number = Math.PI * 2 * getal1;

var tekstveld1: TextField = new TextField();

var tekstveld2: TextField = new TextField();

var tekstveld3: TextField = new TextField();
tekstveld1.text = "henk";

/*Hieronder wordt ook de functie String gebruikt. Deze maakt een string van een int, omdat textfields alleen Strings kunnen bevatten. Dit heet een type-cast.*/

tekstveld2.text = String(getal2);

tekstveld3.text = String(getal3);

tekstveld2.y = 100;

tekstveld3.y = 200;

addChild(tekstveld2);

addChild(tekstveld3);

addChild(tekstveld1);

}

}

Voorbeeld 0: variabelen enzo

2. If / else - controlestructuur


Je kunt op deze manier controleren of een variabele een bepaalde waarde heeft. Als dit het geval is (na if tussen de accolades), wordt er een bepaald stuk code uitgevoerd. Als het niet het geval is (na else tussen de accolades), wordt een ander stuk code uitgevoerd. Er kunnen ook meerdere voorwaarden gesteld worden (met else if).
var i:Int = 12;

if (i == 42)

{

trace(“the answer to life, the universe and everything”);

}

else if (i == 12)

{

trace(“het hoogste getal met één lettergreep, waar niets op rijmt”);

}

else

{

trace(“je begrijpt niets van getallen. Ga weg.”);

}
* Trace() is een functie die dingen kan tonen in je log-schermpje in FlashDevelop
Voorbeeld 1. If -else

3. Loops


Een loop is een herhaling, zodat een stuk code meerdere malen wordt uitgevoerd. Er zijn twee soorten loops. While-loops en for-loops. Onderstaande loops voeren een stuk code 10x uit.
While-loop:

var i:Int = 0;

While (i < 10)

{

trace (“harmen is gek”);

i++;

}
For-loop:

for (var i:Int = 0; i <10; i++)

{

trace(“harmen is gek”);

}
Voorbeeld 2: Een simpele while-loop en een simpele for-loop
Je kunt ook meer ingewikkelde dingen doen met een for-loop. Het handige aan een for-loop is als je veel dingen wilt herhalen, zonder code te copy-pasten :)
Onderstaand voorbeeld maakt bijvoorbeeld gebruik van een for-loop in een for-loop. Op deze manier kunnen 100 cirkels getekend worden in een vierkant. Je ziet dus ook dat de i en de j uit de for-loops, weer gebruikt worden in de x-en y- coördinaten van de cirkel.

public class Main extends Sprite

{



public function Main():void

{

for (var j:int = 0; j < 10; j++)

{

for (var i:int = 0; i < 10; i++)

{

var vriendje:Sprite = new Sprite();

vriendje.graphics.beginFill(0xff0000);

vriendje.graphics.drawCircle(200+40*i, 200+40*j, 10);

vriendje.graphics.endFill();

addChild(vriendje);

}

}

}



}
Voorbeeld 3: 100 cirkels

4. Functies


Een functie is een stuk code wat kan worden aangeroepen op een object (functies veranderen objecten). Als wij een object hebben van het type Sprite, kan daar bijvoorbeeld de functie graphics.drawCircle() op worden aangeroepen.

Deze functie maakt dan een cirkel aan. Veel functies verwachten parameters. Deze parameters staan tussen haakjes, en worden gescheiden door komma's. In het geval van drawCircle() worden er drie parameters verwacht: de x positie van de cirkel, de y positie van de cirkel en de radius van de cirkel.



var henk:Sprite = new Sprite();

henk.graphics.drawCircle( 100 , 100 , 150);

Er zijn heel veel functies zoals drawCircle, deze zijn gemaakt door de lieve mensen die AS3 hebben gemaakt.



Zelfgemaakte functies

We kunnen echter ook zelf een functie schrijven. Deze functie bevat dan een stuk code die eenvoudig aangeroepen kan worden, zonder de hele code te copy-pasten. Zoals de onderstaande functie tafelVan, die de tafel t/m 10 uitrekent van het opgegeven getal. Dit opgegeven getal wordt door de functie verwacht als parameter, dat geven we aan tussen de haakjes met getal:Int.

public class Main extends Sprite

{

public function Main():void

{

tafelVan(5);

}

public function tafelVan(getal:Int):void

{

for (var i:Int=0; i<10 ; i++)

{

trace(i * getal);

}

}

}

Voorbeeld 4: een zelfgemaakte functie

Het aanroepen van een functie (waarin de tafel van 5 getoond wordt in het voorbeeld) gebeurt dan in de functie Main(), want dat is de enige functie die uit zichzelf wordt uitgevoerd (lees hieronder meer over de constructor-functie). De parameter is dan 5, die we opgeven tussen de haakjes bij het aanroepen van de functie.

Een ander voorbeeld is hieronder, waar een leeftijd wordt meegegeven als parameter, en een if-else structuur ervoor zorgt dat er bepaalde dingen worden laten zien op het scherm bij verschillende leeftijden.



public class Main extends Sprite

{

public function Main():void

{

noemLeeftijd(8);

}



public function noemLeeftijd(leeft:int):void

{

var i:Number = new Number;

if (leeft > 18)

{

var welkom:TextField = new TextField;

welkom.text = "welkom";

addChild(welkom);

}

if (leeft < 19)

{

var GTFO:TextField = new TextField;

GTFO.text = "GTFO";

addChild(GTFO);

}

for (i = 0; i < leeft ; i++ )

{

var iTekst:TextField = new TextField;

iTekst.text = String(i);

iTekst.y = i * 10;

addChild(iTekst);

}

}

}

voorbeeld 5: nog een zelfgemaakte functie.

De constructor-functie

Dan is er nog een speciale functie, die de constructor wordt genoemd. Dat is de functie die automatisch wordt uitgevoerd in een klasse. In het bestand Main.as is de hoofdklasse Main, en de constructor heet dan ook Main(). In Vijand.as is dat dan Vijand en Vijand().



public class Main extends Sprite

{

public function Main():void

{

}

}

Public versus private functies

Er zijn zowel public functions als private functions. Public wil zeggen dat deze vanaf overal toegankelijk is. Private wil zeggen dat deze functies alleen vanuit de klasse zelf toegangkelijk zijn.



5. EventListeners


Een eventlistener is het makkelijkst letterlijk te begrijpen als “gebeurtenisluisteraar”. Dit is dus een functie die kijkt of er een gebeurtenis plaatsvindt. Dit kan iets eenvoudigs zijn als een toetsenbordaanslag (KeyEvent), een muisklik/dubbelklik/etc. (MouseEvent), maar ook bijvoorbeeld een EnterFrame Event. Deze laatste luistert naar een nieuw frame. AS3 werkt met frames, een “schermverversing” die standaard op 30 frames per seconde (FPS) staat. Dit kun je ook aanpassen in flashDevelop.

Bij een eventlistener hoort een object waar het op aangeroepen wordt, en een functie die uitgevoerd wordt in het geval van het event.



henk.addEventListener(Event.ENTER_FRAME, doeDezeFunctie);

Hierbij wordt dus 30 keer per seconde de functie doeDezeFunctie() uitgevoerd, vanaf het moment dat het object henk bestaat.



LET OP: doeDezeFunctie() krijgt dan e:Event mee tussen de haakjes. Dus de functie wordt: doeDezeFunctie(e:Event)

henk.addEventListener(MouseEvent.MOUSE_DOWN, geklikt);

Hierbij wordt de functie geklikt() uitgevoerd als de muisknop omlaag gaat op het object henk.



LET OP: geklikt() krijgt dan e:MouseEvent mee tussen de haakjes. Dus de functie wordt: geklikt(e:MouseEvent)

Je kunt ook een eventListener toevoegen aan de “stage”. Dat is het witte doek waarop je programmeert, ook al is er nog niets op zichtbaar. Dan hoort er geen specifiek object bij de eventListener.



Onderstaande code tekent bijvoorbeeld een cirkel (willekeurige grootte, willekeurige kleur) op de plaats van je muiscursor (mouseX en mouseY zijn altijd de x- en y-coördinaat van je cursor).

public class Main extends Sprite

{

public function Main():void

{

stage.addEventListener(MouseEvent.CLICK, maakbal);

}



public function maakbal(e:MouseEvent):void

{

var piet:Sprite = new Sprite();

piet.graphics.beginFill(0xFFFFFF * Math.random());

piet.graphics.drawCircle(mouseX, mouseY, Math.random()*50);

piet.graphics.endFill();

addChild(piet);

}



}

Voorbeeld 6: cirkels maken met een klik

Zo zorgt onderstaande code ervoor dat als je op de cirkel klikt, de cirkel de muis gaat volgen (30 keer per seconde neemt de positie van de cirkel de positie over van de muis.



public class Main extends Sprite

{

public var volgt:Boolean = false;

public var piet:Sprite = new Sprite();

public function Main():void

{

piet.graphics.beginFill(0xFFFFFF * Math.random());

piet.graphics.drawCircle(0, 0, Math.random()*50);

piet.graphics.endFill();

piet.addEventListener(MouseEvent.CLICK, volg);

addChild(piet);

}



public function volg(e:MouseEvent):void

{

if (volgt == false)

{

piet.addEventListener(Event.ENTER_FRAME, beginVolgen);

volgt = true;

}

else {

piet.removeEventListener(Event.ENTER_FRAME, beginVolgen);

volgt = false;

}



}



public function beginVolgen(e:Event):void

{

piet.x = mouseX;

piet.y = mouseY;

}

}

Voorbeeld 7: Je muiscursor laten volgen door een cirkel

Timer Event

Het TimerEvent kun je zien als een alarm wat afgaat na een aantal milliseconden.

Zo kun je in het onderstaande voorbeeld zien hoe een timerevent werkt. Bij het aanmaken van de variabele geef je twee parameters op. De eerste is het aantal milliseconden, de tweede het aantal keer wat de timer opnieuw moet beginnen met aftellen ( 0 = oneindig).

Op de timer moet de eventListener worden aangeroepen. Daar staat dan welke functie moet worden uitgevoerd als de timer klaar is met aftellen.



In het onderstaande voorbeeld wordt dus iedere seconde (1000ms), vijf keer in totaal, een rode cirkel op een willekeurige plaats getekend, in de zelfgeschreven functie alarm.

package

{

import flash.events.Event;

import flash.display.Sprite;

import flash.events.TimerEvent;

import flash.text.TextField;

import flash.utils.Timer;

public class Main extends Sprite

{

public function Main():void

{

var tellertje:Timer = new Timer(1000, 5);

tellertje.addEventListener(TimerEvent.TIMER, alarm);

tellertje.start();

}

public function alarm(e:TimerEvent):void

{

var henk:Sprite = new Sprite();

henk.graphics.beginFill(0xff0000);

henk.graphics.drawCircle(800 * Math.random(), 600 * Math.random(), 30);

addChild(henk);

}

}

}

6. Arrays


Een array is een type variabele. Het is een aanéénschakeling (of lijst) van meerdere gegevens, aangeduid met één naam. Een array kan dus handig zijn als je veel getallen of namen wilt gebruiken in je programma. De plaats van zo'n gegeven wordt aangeduid met een getal.

Bijvoorbeeld: mijnArray[4] staat voor het gegeven wat staat op de vierde plaats (eigenlijk de 5e, want de array begint bij 0) in de array.

Er zijn een aantal handige functies die kunnen worden aangeroepen op een array.

mijnArray.push() - plaatst een gegeven (meegegeven tussen de haakjes) achteraan een array

mijnArray.unset() - plaatst een gegeven vooraan de array (plaats mijnArray[0] ), en schuift alles in de array een plaatsje op.

mijnArray.length() - geeft de lengte van de array. Kan handig zijn in een for-loop.

Onderstaande code zet de getallen 0 t/m 14 in een array, en zet deze in een textField op het scherm, telkens 50 pixels van elkaar.

public class Main extends Sprite

{

public function Main():void

{

var mijnArray:Array = new Array();



for (var i:int = 0; i < 15; i++)

{

mijnArray.push(i);

var tekstveldje:TextField = new TextField();

tekstveldje.x = 50 * i;

tekstveldje.text = String (mijnArray[i]);

addChild(tekstveldje);

}

}

}

}

7. Klassen


Een klasse is een verzameling van variabelen en functies. De klasse heeft altijd dezelfde naam als het bestand (zoals in bovenstaand voorbeeld Main.as). De klasse Main is speciaal, want die wordt automatisch uitgevoerd. Andere klassen wordt alleen iets mee gedaan als deze worden gebruikt.

Het mooie van klassen is dat er objecten van gemaakt kunnen worden. Een object is een instantie van een klasse.

In het onderstaande voorbeeld wordt er een object gemaakt van de klasse Vijand.

public var VijandNummer1:Vijand = new Vijand();

Hier zie je dat VijandNummer1 de naam is van de variabele waar we het object in stoppen. Het object VijandNummer1 van het type Vijand is dus eigenlijk gewoon hetzelfde van het object henk van het type Int in het eerste voorbeeld:



public var henk:Int = new Int();
Alleen hebben we in dit geval de klasse Vijand zelf gemaakt, in plaats van de programmeurs van AS3 die de klasse Int hebben gemaakt. Het type van een variabele is dus een klasse!



De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina