Il s'agit d'une classe de document pour un objet de visualisation. Assurez-vous d'activer off le mode strict (howto here) lors du test de la classe. Mettez aussi des trucs sur la scène. Lorsque le mode strict est désactivé, l'objet walker fonctionne correctement. Cependant, je veux le faire fonctionner en mode strict aussi. J'ai essayé de changer les parties problématiques, et addig (dispObj comme DisplayObject), sans chance.Actionscript 3.0: affichage de l'objet marcheur en mode strict
package {
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
public class DisplayWalker extends MovieClip {
public function DisplayWalker() {
showChildren(stage, 0);
}
private function padIndent(indents:int):String {
var indent:String = "";
for (var i:uint = 0; i < indents; i++) {
indent += " ";
}
return indent;
}
private function showChildren(dispObj:DisplayObject, indentLevel:Number):void {
for (var i:uint = 0; i < dispObj.numChildren; i++) {
var obj:DisplayObject = dispObj.getChildAt(i);
if (obj is DisplayObjectContainer) {
trace(padIndent(indentLevel), obj, obj.name);
showChildren(obj, indentLevel + 1);
} else {
trace(padIndent(indentLevel), obj);
}
}
}
}
}
« DisplayObjects ne peut pas avoir des enfants et sont leafs toujours dans l'arborescence d'objets d'affichage, la méthode de quelque chose Votre showChildren devra compte pour." Il y a un si pour ça. if (obj est DisplayObjectContainer) {...} else {...} – George
Merci! Changer le paramètre à dispObj: DisplayObjectContainer et l'appel récursif à ShowChildren (obj en tant que DisplayObjectContainer) a résolu le problème. – George