Собственно лучше чем такой быдло-хард-код ничего в голову не пришло. Если можно это оптимизировать или вообще изменить подход жду советов.
( P.s. чтобы было понятно о чем речь, реализация однорукого бандита 5 столбчатого , анимация движения бесконечного столбика )
Щас это выглядит ( тест ) :

Код AS3:
public function rotate():void {
for (var i:int = 0; i < 5; i++) {
var t:DisplayObject = _symbolColsContainer.getChildAt(i);
t.filters = [new BlurFilter(0, 40, 1)];
t.addEventListener(Event.ENTER_FRAME , goto);
}
setTimeout( stopIt , 2000 );
}
private function goto(e:Event):void {
var t:Sprite = e.currentTarget as Sprite;
t.y += 90;
if (t.y >= 0 ) {
replace(t.getChildAt(3), t.getChildAt(0));
replace(t.getChildAt(4), t.getChildAt(1));
replace(t.getChildAt(5), t.getChildAt(2));
t.swapChildren(t.getChildAt(3), t.getChildAt(0));
t.swapChildren(t.getChildAt(4), t.getChildAt(1));
t.swapChildren(t.getChildAt(5), t.getChildAt(2));
(t.getChildAt(0) as SlotSymbol).newColor(_getRandomColor());
(t.getChildAt(1) as SlotSymbol).newColor(_getRandomColor());
(t.getChildAt(2) as SlotSymbol).newColor(_getRandomColor());
(t.getChildAt(0) as SlotSymbol).id = _getRandom();
(t.getChildAt(1) as SlotSymbol).id = _getRandom();
(t.getChildAt(2) as SlotSymbol).id = _getRandom();
t.y = -330;
}
}
private function replace(c1:DisplayObject , c2:DisplayObject):void {
var y1:int = c1.y;
var y2:int = c2.y;
c1.y = y2;
c2.y = y1;
}
private function stopIt():void {
for (var i:int = 0; i < 5; i++) {
var t:DisplayObject = _symbolColsContainer.getChildAt(i)
TweenMax.to( t , 1 , { blurFilter: { blurY:0 } , delay:i / 2 , y:0 , onInit:removeEv
, onInitParams:[t] , ease:Back.easeOut , easeParams:[0.8] } );
}
}
private function removeEv(t:Sprite):void {
t.y = -330;
t.removeEventListener(Event.ENTER_FRAME , goto);
(t.getChildAt(0) as SlotSymbol).id = 5;
(t.getChildAt(1) as SlotSymbol).id = 5;
(t.getChildAt(2) as SlotSymbol).id = 5;
}