Всегда брал такой код, никогда не подводил (гориз. прелоадер):

Код:
onClipEvent (load) {
total = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
loaded = _root.getBytesLoaded();
percent = int( loaded / total * 100);
text = "загружено на " + percent + "%";
gotoAndStop(percent);
if (loaded == total) {
_root.gotoAndStop(2);
}
}
Вешается на мувиклип, в нутри которого 100 кадров, и динамическое поле text + анимация через маску, под которой что Вам угодно.