为嵌套对象创建JS容器递归循环

CreateJS Container recursion loop for nested Objects

本文关键字:递归 循环 JS 嵌套 对象 创建      更新时间:2023-09-26

我是一名ActionScript开发人员,终于开始涉足HTML5和JavaScript。 我正在使用 CreateJS,因为它以为像我这样的人提供更容易过渡而闻名。 我正在尝试创建一个递归循环,让我知道我的舞台上有哪些嵌套对象。 我显然还没有到那里。 谁能帮忙指出我哪里出错了? 谢谢。

recur(exportRoot);
function recur(thisContainer)
{
    console.log("recur()");
    for(var i=0; i<thisContainer.getNumChildren; i++)
    {
        console.log(thisContainer.getChildAt[i]);
        if(thisContainer.getChildAt[i].getNumChildren !== null && thisContainer.getChildAt[i].getNumChildren !== isNaN())
        {
            recur(thisContainer.getChildAt[i]);
        }
    }
}
与其使用

getNumChildren 来查看子项是否是容器,不如使用以下内容:

var child = thisContainer.getChildAt[i];
if ( child instanceof createjs.Container ) {
    recur(child);
}

针对 easeljs-0.8.1 的更新:

    private loopContaneir(objDisplay) {
        for (var i= 0; i < objDisplay.numChildren; i++) {
            var child = objDisplay.getChildAt(i);
            if (child instanceof createjs.Container) {
                loopContaneir(child);
            }
        }
    }

似乎我最大的问题之一是我试图使用getNumChildren(不存在的属性)而不是getNumChildren()(方法)。 我现在已经让它正常工作,部分感谢@olsn建议instanceof.

recur(exportRoot);
function recur(thisContainer)
{
    console.log("recur()");
    var containerLength = thisContainer.getNumChildren();
    var thisChild;
    for(var i=0; i<containerLength; i++)
    {
        thisChild = thisContainer.getChildAt(i);
        console.log(thisChild);
        if(thisChild instanceof createjs.Container)
        {
            recur(thisChild);
        }
    }
}