расширение операторов доступа к массиву AS3 для «обертывания» значений индекса за пределами границ

Мне бы очень хотелось, чтобы синтаксис доступа к массиву Flash был «обернут» за границы массива.

Длительное объяснение -

var array:Array = ['a','b','c','d','e','f'];

Для простоты первый индекс равен 0, а его значением является первая буква «а». Чтобы получить это значение, мы сделаем это -

array[0]; // returns 'a'

Пока индекс, который вы используете для доступа к массиву, находится между 0 и array.length (6 в нашем примере), все работает нормально - но если вы используете индекс вне этих границ, вы закрываетесь.

array[-3];
array[9]; // both return 'undefined'

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

array[-3];
array[9]; // both return 'd'

(например, фотогалерея, которая возвращается к началу при нажатии «Далее» на последней фотографии)

Есть небольшой кусок кода, который я использую снова и снова для такого рода вещей, но это всегда для изменения индексадо передавая его в массив:

var index = -3;
while(index < 0){index += array.length}
array[index % array.length]; // returns 'd'

... и это нормально, но я действительно хочу расширить сам объект Array, чтобы он автоматически «оборачивал» значения индекса, выходящие за пределы.

TL; DR - возможно ли обтекание индекса расширением объекта Array Flash AS3?

Ответы на вопрос(2)

Ваш ответ на вопрос