Ошибка 2006 Предоставленный индекс выходит за рамки

#actionscript-3 #error-handling #flash-cs5

#actionscript-3 #обработка ошибок #flash-cs5

Вопрос:

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

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

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

Ответ №1:

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

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

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

1. Да, Mims… спасибо за разъяснение. Кстати, я новичок во всем этом … и спасибо, что поделились своими знаниями!! Я также изучаю Java, но предпочитаю actionscript 3.0 lol.

Ответ №2:

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

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

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

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

1. Flash CS5 понравился ваш код! После того, как я устранил проблему (думал, что устранил проблему с помощью приведенного выше кода), я получил ошибки, и ему совсем не понравился оператор if, и его пришлось удалить, но ваш постоянно работает над устранением этой ошибки Index Out of Bounds. Приветствую x Теперь я должен устранить эту ошибку 1009, лол

2. странно … ? это просто компактное if / else. Удачи со 1009 (догадка: проверьте наличие нулевых экземпляров) ! Кроме того, вам может пригодиться этот сайт: actionscripterrors.com ( actionscripterrors.com/?s=1009amp;searchsubmit=Find )

3. @londonbird addChildAt(uiBar, numChildren > 0 ? numChildren-1 : 0); добавляет uiBar в начало отображаемого списка, который совпадает с addChild(uiBar). Зачем в этом случае нужен addChildAt() ?

4. Привет, Джордж, я думаю, ты меня неправильно понял. Я говорил, что код, который вы дали мне 8 апреля, сработал! Приветствия.