Мой вариант:

Код AS3:
var counter:int = 0;
var step:int = 5;
var arr:Array = [1, 2, 3, 4, 5, 6];
public function timerHandler(e:TimerEvent):void {
var current_part:Array = getArrayElemnts(arr, step, counter);
trace('items(' + current_part.length + '): [' + current_part + ']');
counter = (counter + step) % arr.length;
}
public function getArrayElemnts(array:Array, num:uint, pos:int):Array {
var result:Array = new Array();
var correction:int = array.length * Math.abs((Math.ceil(pos / array.length)))+1;
while (num > 0) {
result.unshift(array[((correction+pos + num-1) % array.length)]);
num--;
}
return result;
}
Можно задавать отрицательные позиции.