Direi che il codice giusto è:

var caricato:Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal * 100;
porta.gotoAndStop(caricato); // <-- e non play
percentuale.text = Math.round(caricato) + "%";
if (caricato > 99) {
gotoAndStop(3);
}

Funziona così ? Ovviamente il movieclip della porta deve avere 100 fotogrammi, se ne ha meno devi interpolare.