Хочу сделать зацыкленно плывущий объект на AS3
есть рабочий код на AS2:

Код:
var n:Number = 4;
var i = 0;
while (i < n)
{
this.attachMovie("cloud", "c" + i, i, {_x: 800 * i, onEnterFrame: function ()
{
if (++this._x > 1600)
{
this._x = this._x - 800 * n;
}
}});
++i;
}
пытаюсь переписать его на AS3:

Код:
package
{
import flash.display.*;
import flash.events.*;
import flash.display.Sprite;
public class main extends Sprite
{
public function main()
{
var n:Number = 4;
var i:Number = 0;
while (i < n)
{
var clouds:cloud = new cloud()
this.addChild(clouds);
clouds.addEventListener(Event.ENTER_FRAME,enterFrame_handler);
}
++i;
}
private function enterFrame_handler(e:Event):void
{
x++;
if (x > 1600)
{
x = x - 800 * 4;
}
}
}
}
две проблемы:
1. ругается на то что цикл (while) выполняется слишком долго...
2. как сделать динамическое название переменной в AS3 (как в примере на AS2 "c" + i )...
p.s. может есть проще способ решить эту задачу?