Ваша проблема в том, что анимация не заканчивается через 0,2 секунды после вызова метода checkCollision.
Если вы вызываете этот метод в ENTER_FRAME, вы будете постоянно перезаписывать существующие анимации. Подумайте об этом - ENTER_FRAME вызывает checkCollisions, checkCollisions запустит несколько анимаций, до того, как они успеют завершиться, запускается следующий ENTER_FRAME, снова вызывает checkCollisions и запускает анимацию для тех же объектов, так как анимация еще не завершилась. объектов пока нет.
Лучше всего вообще не использовать ENTER_FRAME - запустите checkCollisions, запустите анимацию для пересекающихся объектов, если есть пересекающиеся объекты, затем снова вызовите chechCollisions через 0,2 секунды (после завершения анимации)
private function checkCollision (e:Event):void
{
var collisionsDetected:Boolean = false;
//detect collision in array
for (var j:uint = 0; j < collisionArray.length - 1; j++)
{
for (var k:uint = j + 1; k < collisionArray.length; k++)
{
if (collisionArray[j].hitTestObject(collisionArray[k]))
{
//do something
TweenLite.to (objectA,0.2,{y:move2Y});
TweenLite.to (objectB,0.2,{y:move3Y});
collisionsDetected = true;
}
trace (collisionArray[j].hitTestObject(collisionArray[k]));
}
}
//you might want to make the timeout a little longer than 200ms,
//to make sure that the tweens have completed when it fires.
//you can figure out the best delay based on your framerate
if(collisionsDetected) setTimeout(checkCollision, 250);
}