Список Flex 4.5 - ошибка sureIndexIsVisible

В моем приложении у меня есть список элементов, которые можно изменить, щелкнув список с помощью кнопки «следующий / предыдущий» или через меню, которое позволяет им переключаться между элементами (в основном для версии для телефона, в которой список не отображается. ).

Я использую функцию sureIndexIsVisible после заполнения поставщика данных для списка. Однако иногда, когда я возвращаюсь на эту страницу, приложение вылетает со следующей ошибкой:

RangeError: Error #1125: The index 0 is out of range 0.
at spark.layouts.supportClasses::LinearLayoutVector/getMajorSize()[E:\dev\4.y\frameworks\projects\spark\src\spark\layouts\supportClasses\LinearLayoutVector.as:420]

Странно то, что индекс, который я передаю функции при сбое, не равен 0. Это может быть 1 или 3 или, предположительно, что угодно. Я могу предотвратить сбой приложения, если удалю вызов функции, но мне нужен список, чтобы показать, какой вопрос сейчас выбран.

На самом деле происходит сбой в следующей строке: var block:Block = blockTable[index >> BLOCK_SHIFT]; из функции getMajorSize


person Rjs37    schedule 28.02.2012    source источник


Ответы (2)


Поскольку это так долго оставалось без ответа, я подумал, что отвечу на него сам тем, чем я недавно закончил.

Мне удалось решить эту проблему, в основном изменив точки, в которых я вызвал функцию. т.е. его вызвали слишком рано.

Однако недавно я перешел на использование настраиваемой функции, которую опубликовал кто-то другой, поскольку я обнаружил, что sureIndexIsVisible часто прыгает в неправильную позицию в списке (из-за разницы в высоте элементов).

Эту функцию можно найти по этому вопросу и она называется scrollToIndex: Прокрутите до выбранного элемента в компоненте Flex 4 Spark List

person Rjs37    schedule 28.09.2012
comment
... Но когда вы в конечном итоге позвонили, чтобы заставить его работать? Я имею в виду, черт возьми, было бы неплохо иметь какое-то событие, которое запускалось бы после того, как весь макет будет готов. Это что-то очевидное, что я только что пропустил? - person DuneCat; 23.04.2014

Эта ошибка связана с FLEX-28291, которая должна быть исправлена ​​в следующей версии. Apache Flex (наверное 4.14).

person user166267    schedule 03.09.2014