Ошибка 2006 Поставляемый индекс выходит за пределы - PullRequest
2 голосов
/ 08 апреля 2011

Другой день, к сожалению, другая проблема - последняя строка этого фрагмента кода является виновником:

                    uiBar = new mcUiBar();
        uiBar.x=-15;
        uiBar.y=-5;
        addChildAt(uiBar, numChildren-1);

Теперь я исследовал и знаю, что это имеет отношение к массиву, который больше, чем кто-либо, ноЯ не понимаю это.Я в тупике.Буду признателен за вашу помощь.Приветствия

Ответы [ 2 ]

4 голосов
/ 09 апреля 2011

Ошибка за пределами диапазона в основном говорит о том, что значение, которое вы предоставляете для индекса, находится вне диапазона массива индексов в контейнере экранного объекта. Допустимый диапазон: от 0 до n+1, где n - верхний дочерний индекс. Еще один способ сказать, что это от 0 до numChildren. Итак, Джордж прав, у вас будут проблемы, когда numChildren - 1 = -1.

Если вы пытаетесь добавить дочерний элемент в слой next-to-top , используйте оператор if выше. Однако, если вы просто пытаетесь добавить его в верхний слой, вы должны использовать addChildAt(child, numChildren) или addChild(child), которые являются синонимами.

1 голос
/ 08 апреля 2011

Слишком маленький код, но последняя строка: addChildAt(uiBar, numChildren-1); похоже, проблема.

Что произойдет, если еще не добавлено ни одного дочернего элемента (numChildren равно 0)? Это должно привести к ошибке, потому что вы пытаетесь добавить uiBar на глубину / индекс -1

попробуй addChildAt(uiBar, numChildren > 0 ? numChildren-1 : 0);

...