Мне бы очень хотелось, чтобы синтаксис доступа к массиву Flash был «обернут» за границы массива.
Длительное объяснение -
var array:Array = ['a','b','c','d','e','f'];
Для простоты первый индекс равен 0, а его значением является первая буква 'a'. Чтобы получить это значение, мы сделаем это -
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?