- Inheritance
- Composition
Dit betekent dat een class automatisch de eigenschappen en functions van een andere class kan overnemen. In dit codevoorbeeld zie je dat de class Robot
de eigenschappen van een Actor
krijgt.
import { Actor } from "excalibur"
class Robot extends Actor {
}
Omdat de Robot
nu een Excalibur Actor
is, kan je de onInitialize
functie gebruiken. Ook is er nu een pos
en vel
beschikbaar:
import { Actor } from "excalibur"
class Robot extends Actor {
onInitialize(){
console.log(this.pos)
console.log(this.vel)
}
}
Als je in jouw class extends
gebruikt dan moet je het super()
keyword toevoegen aan je constructor. Dit zorgt dat de constructor van de parent class ook aangeroepen wordt:
import { Actor } from "excalibur"
class Robot extends Actor {
constructor() {
super()
console.log("ik ben een robot")
}
}
In Excalibur wordt super()
gebruikt om de x,y
en de width,height
aan de actor class door te geven.
import { Actor } from "excalibur"
class Robot extends Actor {
constructor() {
super({x:10, y:10, width:100, height:100})
console.log("ik ben een robot")
}
}
🚨 Als je class geen constructor heeft, dan kan je
super()
ook weglaten.
Hieronder nog een aantal voorbeelden waarin je extends
gebruikt om de functionaliteit van Excalibur aan jouw code toe te voegen.
class Game extends Engine {
}
class MyText extends Label {
}
class MyLoader extends Loader {
}
Composition houdt in dat je nadenkt over hoe je game is opgebouwd. Zitten al je actors in de main game class, of is het handiger dat een actor zelf ook weer child actors heeft?
In dit code voorbeeld plaatsen we een Car
Actor op een Road
Actor.
class Road extends Actor {
onInitialize(){
let c = new Car()
this.addChild(c)
}
}
In de volgende oefening plaatsen we kippen op een boomstam om te oefenen met inheritance en composition. De relaties tussen de classes kan je als diagram tekenen:
- Kip en Boomstam zijn Actors (Inheritance)
- Game is Engine (Inheritance)
- Game heeft Boomstammen (Composition)
- Boomstam heeft kippen (Composition)
- Begin met excalibur chicken on a raft
- Plaats
Tree
in deGame
- Plaats
Chicken
op deTree
- Laat de kippen meebewegen met de boomstammen.
- Laat de kippen heen en weer bewegen op de boomstammen
- Geef de kippen een hoedje
- Speel de theme song
- Om
Actors
toe te voegen aan deGame
(of aan eenScene
) gebruik jethis.add()
. - Om
Actors
toe te voegen aan een andereActor
gebruik jethis.addChild()
.