Les Classes sont aux fonctions ce que les objets sont aux variables simples : une classe est un groupement de fonctions appelées “méthodes” et de variables appelées “propriétés”. C’est un mélange entre une fonction ( avec des arguments ) et un objet (fonctionnement en clef valeur accessible par des . )
Lorsque que vous utilisez l’api Harmony vous ne faites qu’utiliser des classes.
Déclarer une classe
Hors des script harmony nous avons droit d’utiliser le mots clef class
class my_class(){
}
mais dans harmony le mots clef class est interdit et nous sommes contraints d’utiliser le mots clef function à la base. Le resultat est le même mais cela peut vraiment prêter à confusion au début.
Avec l’exemple suivant , pouvez vous comprendre à quoi sert une classe ?
function Animal(_type,_sound ){
this._type= _type
this._sound = _sound
this.make_sound= function(){
MessageBox.information(this._sound )
}
this.talk= function(){
MessageBox.information("Hello ! i'm a "+this._type)
}
}
var medor = new Animal("dog","ouaf")
medor.talk()
// affiche hello ! i'm a dog
medor.make_sound()
// affiche ouaf
var mimi = new Animal("chat","miaou")
mimi .talk()
// affiche hello ! i'm a cat
mimi .make_sound()
// affiche miaou
On voit deux nouveaux mots clefs “this” à l’intérieur de la déclaration et “new”
new permet d’instancier une classe. Instancier une classe revient à créer une copie de la classe en suivant son plan et à reset tout ses propriétés.
Une instance est comme objet sauf qu’elle est unique, elle va pouvoir avoir ses propres valeurs de propriétés et évoluer le long du code. C’est typiquement comme cela que l’on code le comportement d’un enemie dans un jeux.
function Enemy(_name,_hitpoints,_damage) {
this._name = _name
this._hp = _hitpoints
this._damage = _damage
this.attack = function(_player){
_player.hitpoints -= this._damage
}
}
L’état d’une instance peu changer au cour du temps si les méthodes de la classes le permettent
function Human() {
this._stomac =[]
this.eat= function(_something){
this._stomac.push(_something)
}
}
var BlancheNeige = new Human()
MessageBox.information(BlancheNeige._stomac)
// affiche []
BlancheNeige.eat("apple")
MessageBox.information(BlancheNeige._stomac)
// affiche ["apple"]
Dans harmony
lorsque l’on utilise “node” on fait appel à une instance de la classe Node qui propose tout un tas de méthodes pour manipuler les nodes
MessageBox est AUSSI une classe
enfait TOUT dans la doc toonboom est une classe.
ToonBoom utilise les classes pour ranger ses functions par thème sous forme de méthodes.