Bug du compilateur Flash 8 (...et moins?)
Par -Alexandre LEGOUT aka LAlex- le vendredi, décembre 9 2005, 17:02 - AS2 - Lien permanent
Le compilateur de Flash 8 semble contenir un bug qui, s'il est mineur, peut provoquer quelques arrachages de cheveux. En fait, lorsque l'on hérite d'une classe en précisant son chemin complet (donc sans import), le compilo va la considérer comme importée, mais ce n'est pas le cas à l'éxecution. La où l'on s'attend donc à obtenir une erreur de compilation, tout se passe bien, et on comprend donc mal où est l'erreur... :\
Petit exemple :class com.lalex.myappli.CustomSocket extends com.lalex.net.ExtendedSocket {
function CustomSocket() {
/**
* ExtendedSocket.CONNECT_FAILED sera 'undefined'
* car on a pas importé com.lalex.net.ExtendedSocket
* Pourtant, le compilo laisse passer
*/
addEventListener(ExtendedSocket.CONNECT_FAILED, this, handleConnectionFail);
}
private function handleConnectionFail(o) {
trace("Connection failed");
}
}
Bon, je vous l'accorde, on pourrait dire "Ben il n'avait qu'à importer la classe", ou "Il n'avait qu'à donner le chemin complet de la classe!"... mais le compilateur n'est-il pas là pour nous signaler ce genre d'oublis? :o
Commentaires
Ah oué, et c'était pareil sous fmx 2004 ou quoi ? Sinon CONNECT_FAILED tout court il prendrait la bonne valeur non ?
J'avais jamais remarqué... car je fais toujours mes imports au début de mes classes.. mais c'est clair que c'est louche lol... faudrait voir au passage si en AS3 c'est tjs le cas? je ne pense pas... mais bon .. on ne sait jamais !
EKA+
Ben il n'avait qu'à importer la classe
Plus sérieusement, c'est vraiment louche comme bug :\ Mais au moins, ce n'est qu'un bug de compilateur qui peut être contourner assez facilement.
Fil des commentaires de ce billet