Bonjour
je voulais juste savoir la différence entre la super class
super()
(avant l'init en as3) et les
import
de class ou même les
dispatchEvent
car un super sert normalement a propager tout non ? donc un import n'est plus nécéssaire et un dispachEvent non plus ou j'ai rien compris :)
Un "super" permet d'appeler la fonction constructeur de la classe parente (dans le cas du super tout court, soyons d'accord).
Import quant à lui permet comme son nom l'indique d'importer des classes dans le but de les utiliser.
Le dispatchEvent lui, permet de propager les évènements.
Merci de ta réponse :)
mais je vois souvent des super() dans les classes constructeurs main () du projet principal genre si tu fais ton code sur flash builder à l’époque de la beta il y avait forcement un super() de créé dans la class constructeur :) donc de la class parent movieclip donc pourquoi ?
moi ce que je veux juste comprendre la différence car si je fais une class bouton qui extends la class movieclip pourquoi faire un super alors qu'un import me fera exactement la même chose
je sais pas si je suis très clair car je veux juste comprendre la différence ce qu'on peut attendre de plus ou de moins, car si ta class parent est la class bonbon si je fais un import de class bonbon pourquoi je ferais un super() ou inversement et les deux ça ferait doublon non ? et si ma class bonbon permet de changer l’état de mes bouton si je fais un dispatchEvent je propage ce que je veux alors pourquoi faire un super() ?
moi je veux juste comprendre la différence car comme ça je comprendrais surement mieux l'AS
merci en tt cas RezA :)
Bonjour,
Super et import ne sont pas du tout la même chose. Ca n'a pas le même but.
La méthode super est utile pour l'héritage. Le fait de mettre super dans le constructeur d'une classe Main étendant de MovieClip permet d'appeler le constructeur de MovieClip, mais pour ce cas ce n'est pas utile car c'est fait automatiquement.
Là ou super devient intéressant, c'est lors de la surcharge des méthodes.
Imagine une classe "Humain", cette classe possède la méthode manger, qui une fois appelée créer un trace disant "Je mange".
Ensuite, imagine deux classes, une classe Femme, et une classe Homme qui héritent toute deux de la classe Humain. Il est possible de redéfinir la méthode manger de la classe parente. (Avec override).
La classe Homme aurait donc sa méthode manger qui trace juste "Je mange une pizza". La classe Femme elle tracerait au sein de sa méthode manger "Ma pizza est presque cuite", suivit de l’élément super appelant la méthode manger de la classe Humain (super.manger()) qui tracerait donc aussi "je mange".
Bon je t'accorde qu'avec mon exemple l'utilité reste limitée, mais je peux t'assurer que c'est grandement utile dans certains cas.
Bonjour
Merci encore pour ta réponse ReZa :)
oui je me doute que ça doit être utile c'est pour ça que j'essaye tant de la comprendre et que je cherche sur internet même sur les forum anglais :)
Car je connais aussi un peu override et justement dans ton exemple si dans ma class Homme ou femme je fais un extends humain au lieu de Movieclip il hérite bien de cette class parent aussi donc pourquoi lui mettre un super(), car si dans ma class homme ou femme je fais un extends je récupère bien tout de ma class parent donc humain non ? c'est juste pour récupérer une partie du code c'est ca ? et pouvoir overrider certaines fonctions ? car vu que les deux extends la class Humain il hérite tout les deux des même fonctions principales.
car si je comprends bien ton exemple dans homme j'aurais je mange une pizza dans femme j'aurais je mange une pizza et je mange en sortie trace non ? mais si je fais dans ton exemple un dispatchEvent de ta fonction trace je mange dans la fonction humain je pourrais tout aussi bien appeler cette fonction dans la class femme et pas dans homme donc j'aurais le même résultat non ? c'est peut être pour simplifier si jamais tu as une grande quantité de code c'est ca ?
Je veux juste saisir le but car en fait j'ai juste l'impression de ne pas saisir son intérêt, a cette fonction et qu'on peux très bien sans passé car j'ai fais de nombreux tutoriaux et certain la garde d'autre la vire alors moi je comprends plus :)
mais merci encore pour ta réponse je suis peut être pas fait pour comprendre :)