Я предлагаю примерно следующее

Код AS3:
//выпущенный шарик
var newBall:Ball = getLaunchedBall();
//прилетел между двумя другими шариками
var previousBall:Ball = getPreviousBall();
var nextBall:Ball = getNextBall();
//Привязываем наш шарик к новым соседям
newBall.prev = previousBall;
newBall.next = nextBall;
//Привязываем соседей к нашему шарику (до этого они указывают друг на друга)
previousBall.next = newBall;
nextBall.prev = newBall;
//Проходим по цепочке от нашего шарика до конца, по пути собирая шарики в массив
var ballsToMove:Array = [];
var currentBall:Ball = newBall;
while(currentBall = currentBall.next)ballsToMove.push(currentBall);
//Двигаем собранные шарики
moveBalls(ballsToMove);