такое подозрение, что оптимизация здесь бессильна, посмотрел периодичность вызовов enterFrame

Код AS3:
private function this_enterFrame(e:Event):void
{
obj.x += 2;
var t1:Number = getTimer();
log += (t1-t0) + ", ";
t0 = t1;
if (obj.x > 100)
{
Console.log(log);
this.removeEventListener(Event.ENTER_FRAME, this_enterFrame);
}
}
//44, 12, 2, 27, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 16, 17, 17, 17, 17, 17, 17, 17, 25, 17, 0, 1, 8, 24, 9, 18, 23, 9, 18, 23, 9, 17, 24, 9, 17, 24, 9, 17, 24, 9,
если такой замер корректен, то это полная ж., какая тут может быть плавность..

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
[SWF (frameRate="120")]
public class Main extends Sprite
{
private var obj:Sprite = new Sprite();
private var t0:Number;
private var speed:Number = 0.1;
public function Main():void
{
obj.graphics.beginFill(0x804000);
obj.graphics.drawRect(0, 0, 60, 120);
addChild(obj);
this.addEventListener(Event.ENTER_FRAME, this_enterFrame);
t0 = getTimer();
}
private function this_enterFrame(e:Event):void
{
var t:Number = getTimer() - t0;
//obj.x = int(t * speed);
obj.x = Math.round(20 * t * speed) / 20;
if (obj.x > 1000)
{
t0 = getTimer();
}
}
}
}