рекурсивное получение всех дочерних элементов, внуков и т. Д. Этапа в as3

#actionscript-3 #recursion #flash-cs4

#actionscript-3 #рекурсия #flash-cs4

Вопрос:

Я впервые использую рекурсию в actionscript, поэтому я уверен, что есть что-то, чего я не учитываю. То, что я пытаюсь сделать, это просто перебирать дочерние элементы этапа и отслеживать, что такое дочерний элемент и индекс. Вот некоторый код.

     public function recurseStage(dOC:DisplayObjectContainer)
    {
        var numCh = dOC.numChildren;
        for(var i = 0; i < numCh; i  )
        {
            var child = dOC.getChildAt(i);  
            trace("child: "   child   " at i: "   i);

            if(child.numChildren > 0)
            {
                recurseStage(child);
            }
        }
    }
  

проблемной областью, по-видимому, является фактический вызов recurseStage() в конце. А также оператор if перед этим. Я знаю, что не у всех дочерних элементов будет свойство .numChildren, но я не уверен, что использовать вместо этого. Это должно быть легко исправить, но мой мозг просто не помогает мне прямо сейчас.
Кроме того, если есть лучший способ, чем этот, пожалуйста, дайте мне знать. Заранее спасибо.

Ответ №1:

используйте
if (child is DisplayObjectContainer amp;amp; child.numChildren > 0)

вместо

if(child.numChildren > 0)

Комментарии:

1. Спасибо! Это сделало это. Я пробовал каждый из них сам по себе, но по какой-то причине не пробовал оба. еще раз спасибо.

2. Извините, это заставило меня подождать несколько минут, прежде чем я смог принять.