rozszerzenie operatorów dostępu do macierzy AS3 w celu „zawinięcia” wartości indeksów spoza zakresu

Naprawdę chciałbym być w stanie zrobić składnię dostępu do tablicy „wrap” w granicach tablicy.

Długie wyjaśnienie -

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

Aby zachować prostotę, pierwszy indeks to 0, a jego wartość to pierwsza litera „a”. Aby uzyskać tę wartość, zrobilibyśmy to -

array[0]; // returns 'a'

Dopóki indeks używany do uzyskania dostępu do tablicy mieści się w przedziale od 0 do array.length (w naszym przykładzie 6), wszystko działa poprawnie - ale jeśli użyjesz indeksu poza tymi granicami, zamkniesz system.

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

Czasami jest to dobra rzecz - czasami spodziewasz się, że tak się stanie i wszystko jest w porządku. Innym razem życzysz sobie (a przynajmniej pragnę), żeby zachowywał się trochę tak -

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

(np. galeria zdjęć, która wraca na początek, gdy klikniesz „następny” na ostatnim zdjęciu)

Jest trochę fragmentu kodu, którego używam wielokrotnie do tego rodzaju rzeczy, ale zawsze muszę zmienić indeksprzed przekazanie go do tablicy:

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

... i dobrze, ale naprawdę chcę rozszerzyć sam obiekt Array, aby automatycznie „zawijał” wartości indeksu, które wychodzą poza granice.

TL; DR - Czy zawijanie indeksów jest możliwe poprzez rozszerzenie obiektu Array Flash AS3?

questionAnswers(2)

yourAnswerToTheQuestion