これは、表示オブジェクトウォーカーのドキュメントクラスです。クラスをテストするときにをから厳密モード(howto here)に設定してください。また、ステージ上にいくつかのものを置く。厳密なモードをオフにすると、オブジェクトウォーカーはうまく動作します。しかし、私は厳密なモードでも動作させたい。問題のある部分を変更しようとしましたが、addig(DisplayObjectとしてdispObj)は運がありません。Actionscript 3.0:オブジェクトウォーカーを厳密モードで表示
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);
}
}
}
}
}
「のDisplayObjectが子供を持って、常に表示オブジェクトツリーに葉していることができない、何かごshowChildren方法は、する必要があります)。私は、コードをテストしていないが、いずれにしても、あなたはそれを把握することができるはずです"のアカウント。そのためのifがあります。 if(objはDisplayObjectContainer){...} else {...} – George
ありがとう!パラメータをdispObj:DisplayObjectContainerに変更し、ShowChildren(DisplayObjectContainerとしてobj)への再帰呼び出しを問題に解決しました。 – George