I would recommend using the first option (using stage.width) rather than a tweened animation. It makes your file size slightly smaller and insures for smoother animation. Although, for something as small as a preloader I think you'd be battling to notice any differences.
Here's how I would do it:
Code:
this.createEmptyMovieClip("pre",0);
i_pre = setInterval(f_pre,10,this.getBytesLoaded()/this.getBytesTotal()*Stage.width);
function f_pre(wid)
{
if(wid<=Stage.width)
{
with(pre)
{
moveTo(0,0);
beginFill(0xFF0000,100);
lineTo(wid,0);
lineTo(wid,20);
lineTo(0,20);
endFill();
}
}
else
{
clearInterval(i_pre);
}
}