Pour ceux qui n'ont pas suivi les commentaires du post sur un inconvénient du typage fort, Timothee Groleau et moi nous sommes aperçu qu'un vieux bug issu de Flash 5, corrigé sur Flash MX, a refait surface dans Flash MX 2004. Il s'agit du bug de constructor lors de l'héritage.

En effet, lors de l'héritage, dans une classe fille, la propriété this.constructor pointe sur le constructeur de la classe parent, que ce soit en AS1 ou en AS2. Le problème dans Flash 5 avait été évoqué par Dave Yang : http://www.quantumwave.com/flash/inheritance.html.

Pour exemple, voici un héritage fait en AS1 au moyen de la méthode préconisée par Macromedia, avec l'instruction new :_global.Parent = function() {};
_global.Child = function() {};
Child.prototype = new Parent();
Child.prototype.doIt = function() {
        trace("isParent ? " + (this.constructor == Parent));
        trace("isChild ? " + (this.constructor == Child));
}
var obj = new Child();
obj.doIt();
Compilé avec Flash MX, la sortie est logiquement :isParent ? false isChild ? true Par contre, compilé avec Flash MX 2004, la sortie est isParent ? true isChild ? false De la même manière, l'AS2 utilise égallement la méthode new de Macromedia lors de sa traduction en AS1, et on a donc le même problème :class Child extends Parent {
  // ....
  function doIt() {
   trace(this.constructor == Parent);
  }
}
var c:Child = new Child();
c.doIt(); // true
Le seul moyen qui avait été trouvé pour rectifier ce problème avec Flash 5 était d'initialiser this.constructor à la main dans le constructeur : class Parent {
  function Parent() {
    this.constructor = Parent;
    // ...
  }
}
class Child extends Parent {
  function Child() {
    super();
    this.constructor = Child;
    // ...
  }
}

C'est quand même incroyable que Flash qui se veut maintenant un outil de développement complètement orienté objet ait encore ce genre de disfonctionnements! :? Il ne reste plus qu'à espérer qu'un patch pour MX 2004 tant attendu par tous les développeurs Flash réctifie ce problème ... :roll:

Au fait, vous avez remarqué ? La colorisation de l'AS2 se fait correctement maintenant ! :D