Bonjour les amis, aujourd'hui un bug tout en subtilité sur lequel je suis tombé hier :

Conditions :

  • Vous êtes à l'intérieur d'une clause switch/case
  • Vous voulez déclarer une variable de type XML ou XMLList et lui affecter une valeur sur une même ligne

Bingo, le contenu de la variable sera null ...

Exemple :

switch(condition)
{	
  case 0:
  var content:XML = xmlListObject.node.(@id == id)[0]; // l'expression renvoie bien un noeud XML
  trace(content); // -> null
  break;

  case 1:
  ...
}

Solution :

Très simple à résoudre, il suffit de déclarer puis affecter la valeur en 2 temps :

switch(condition)
{	
  case 0:
  var content:XML;
  content = xmlListObject.node.(@id == id)[0];
  trace(content);
  break;

  case 1:
  ...
}

Voilà, simple et efficace. Merci à ce billet pour avoir trouvé la solution, à Fred pour avoir trouvé ce billet, et visiblement à Adobe pour avoir corrigé le souci dans la dernière version du player (la page du bug sur Jira est ici).