我真的很希望能够使 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'
(例如,当您在最后一张照片上单击“下一步”时,照片库会跳回到开头)
我反复使用一小块代码来完成这类事情,但它总是要改变索引before将其传递到数组中:
var index = -3;
while(index < 0){index += array.length}
array[index % array.length]; // returns 'd'
...这很好,但我真正想做的是扩展 Array 对象本身,以便它自动“包装”超出范围的索引值。
TL;DR - 是否可以通过扩展 Flash AS3 的数组对象来实现索引包装?