Ted Patrick vient de donner sur la liste Flashcoders une explication de la manière dont flash gère ses données, et plus particulièrement les movieclips sur ce thread. En effet, les quatre types de données gérées par le Flash Player sont

  • Les types simples (nombre, chaines, booléens), accédés par valeur
  • Les objets, accédés par référence
  • Les fonctions, accédées par référence
  • les movieclips, accédés par profondeur.
En fait, c'est la dernière catégorie que je trouve trés interessante. En fait, on peut avoir plusieurs clips qui ont le même nom d'instance, c'est celui qui a la plus petite profondeur qui va avoir la priorité ://add 2 movieclips of the same name
a = _level0.createEmptyMovieClip("ted",1);
b = _level0.createEmptyMovieClip("ted",2);
//which one is named ted? >> Lowest Depth Wins!
trace(_level0.ted.getDepth()) // 1
//trace the references a & b
trace(a.getDepth()) // 1
trace(b.getDepth()) // 2
//add some data
_level0.ted =23
//Data, Objects,Functions, Primitves can overshadow, movieclip path
trace(_level0.ted) // 23

Sur ce, il conseille de travailler les movieclips toujours par référence (valeurs de retour de createEmptyMovieClip par exemple), pour éviter ce type de problèmes.

Voila pourquoi dans Flash MX 2004 il a du être plutôt facile d'implémenter la méthode MovieClip.getInstanceAtDepth .... ;)