När en ljudfil eller videofil spelas upp samtidigt som data fortfarande läses in kallas det för
direktuppspelning
. Externa ljudfiler som läses in från en fjärrserver är ofta direktuppspelade så att användaren inte behöver vänta på att alla ljuddata ska läsas in före avlyssning av ljudet.
Egenskapen
SoundMixer.bufferTime
representerar antalet millisekunder av ljuddata som Flash Player eller AIR ska samla in före ljudet spelas upp. M.a.o., om egenskapen
bufferTime
anges till 5000, läser Flash Player eller AIR in minst 5000 millisekunder av data från ljudfilen innan ljudet börjar spelas upp. Standardvärdet för
SoundMixer.bufferTime
är 1000.
Du kan ersätta det globala
SoundMixer.bufferTime
-värdet i ditt program för ett individuellt ljud genom att explicit specificera ett nytt
bufferTime
-värde när ljudet läses in. När du vill åsidosätta standardbufferttiden skapar du först en ny instans av klassen SoundLoaderContext och anger dess
bufferTime
-egenskap och skickar den sedan som en parameter till
Sound.load()
-metoden enligt exemplet nedan:
import flash.media.Sound;
import flash.media.SoundLoaderContext;
import flash.net.URLRequest;
var s:Sound = new Sound();
var req:URLRequest = new URLRequest("bigSound.mp3");
var context:SoundLoaderContext = new SoundLoaderContext(8000, true);
s.load(req, context);
s.play();
Under uppspelningsförloppet försöker Flash Player och AIR behålla samma buffertstorlek eller större för ljudet. Om ljuddata läses in fortare än uppspelningshastigheten, fortsätter uppspelningen utan avbrott. Men om datainläsningshastigheten saktar ned på grund av nätverksbegränsningar kan spelhuvudet nå slutet på ljudbufferten. Om detta händer inaktiveras uppspelningen men återupptas automatiskt när mer ljuddata har lästs in.
Använd egenskapen
Sound.isBuffering
för att ta reda på om Flash Player eller AIR väntar på data för inläsning.