Paket | flash.media |
Klass | public class SoundLoaderContext |
Arv | SoundLoaderContext Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
-metoden för klassen Sound.
Överväg följande säkerhetsmodell när du använder den här klassen:
- Inläsning och uppspelning av ett ljud tillåts inte om den anropande filen finns i en nätverkssandlåda och ljudfilen som ska läsas in är lokal.
- Som standard är det inte tillåtet att läsa in och spela upp ett ljud om den anropande filen är lokal och försöker läsa in och spela upp ett fjärrljud. En användare måste ge särskild behörighet som tillåter detta.
- Vissa åtgärder som har med ljud att göra är begränsade. Det går inte att få åtkomst till data i ett inläst ljud med en fil i en annan domän om du inte implementerar en URL-principfil. Ljudrelaterade API:er som faller under denna begränsning är egenskapen
Sound.id3
och metodernaSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
ochSoundTransform()
.
I Adobe AIR begränsas emellertid inte innehåll i säkerhetssandlådan application
(innehåll som installeras med AIR-programmet) av de här säkerhetsbegränsningarna.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Egenskap | Definieras med | ||
---|---|---|---|
bufferTime : Number = 1000
Hur många millisekunder ett direktuppspelat ljud ska förhandsinläsas till en buffert innan direktuppspelningen startar. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Anger om programmet ska försöka ladda ned en URL-principfil från det inlästa ljudets server innan ljudet börjar läsas in. | SoundLoaderContext | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object |
Metod | Definieras med | ||
---|---|---|---|
Skapar ett nytt objekt för ljudinläsningskontext. | SoundLoaderContext | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object |
bufferTime | egenskap |
public var bufferTime:Number = 1000
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Hur många millisekunder ett direktuppspelat ljud ska förhandsinläsas till en buffert innan direktuppspelningen startar.
Observera att det inte går att åsidosätta värdet SoundLoaderContext.bufferTime
genom att ställa in den globala egenskapen SoundMixer.bufferTime
. Egenskapen SoundMixer.bufferTime
påverkar bufferttiden för inbäddade direktuppspelade ljud i en SWF-fil och är beroende av dynamiskt skapade Sound-objekt (d.v.s. Sound-objekt som har skapats i ActionScript).
checkPolicyFile | egenskap |
public var checkPolicyFile:Boolean = false
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Anger om programmet ska försöka ladda ned en URL-principfil från det inlästa ljudets server innan ljudet börjar läsas in. Den här egenskapen används för ljud som läses in från en annan domän än den anropande filens egen domän med metoden Sound.load()
.
Ange den här egenskapen till true
när du läser in ett ljud från en annan domän än den anropande filens egen domän och koden i den anropande filen behöver åtkomst till ljudets data på låg nivå. Åtkomst till ljudets innehåll på låg nivå behövs till exempel för att referera egenskapen Sound.id3
för att hämta ett ID3Info-objekt eller anropa metoden SoundMixer.computeSpectrum()
för att hämta ljudexempel från det inlästa ljudet. Om du försöker få åtkomst till ljuddata utan att ställa in egenskapen checkPolicyFile
på true
vid inläsningen kan ett SecurityError-undantag inträffa eftersom den begärda principfilen inte har laddats ned.
Om du inte behöver få åtkomst till ljuddata som du läser in på låg nivå kan du undvika att ställa in checkPolicyFile
på true
. Om du kontrollerar en principfil används mycket bandbredd och starten av nedladdningen kan fördröjas. Utför därför bara kontrollen när det är nödvändigt.
Om du anropar Sound.load()
med SoundLoaderContext.checkPolicyFile
inställt på true
måste en relevant URL-principfil laddas ned i Flash Player eller AIR eller så måste programmet fastställa att ingen sådan principfil finns innan nedladdningen av det angivna ljudet påbörjas. Flash Player eller AIR utför följande åtgärder, i denna ordning, för att kontrollera om det finns en principfil:
- Flash Player eller AIR kontrollerar de principfiler som redan har laddats ned.
- Flash Player eller AIR försöker ladda ned väntande principfiler som har angetts i anrop till
Security.loadPolicyFile()
. - Flash Player eller AIR försöker ladda ned en principfil från den standardplats som motsvarar ljudets URL, som är
/crossdomain.xml
på samma server somURLRequest.url
. (Ljudets URL anges i egenskapenurl
för URLRequest-objektet som skickas tillSound.load()
eller konstruktorfunktionen Sound().)
I samtliga fall kräver Flash Player eller AIR att den angivna principfilen finns på ljudets server – den måste ge åtkomst till ljudfilen på URLRequest.url
genom sin plats, och den måste ge den anropande filens domän åtkomst till ljudet, via en eller flera <allow-access-from>
-taggar.
Om du anger checkPolicyFile
som true
väntar Flash Player eller AIR tills principfilen har kontrollerats innan ljudet läses in. Du bör vänta med att utföra eventuella lågnivååtgärder med ljuddata, t.ex. anropa Sound.id3
eller SoundMixer.computeSpectrum()
, tills progress
- och complete
-händelser skickas från Sound-objektet.
Om du anger checkPolicyFile
till true
och ingen lämplig principfil hittas, visas inget felmeddelande förrän du utför en åtgärd som kräver en principfil, varpå Flash Player eller AIR genererar ett SecurityError
-undantag. Om du har tagit emot complete
-händelsen kan du testa om det gick att hitta en relevant principfil genom att hämta ett värde på Sound.id3
i ett try
-block och se om en SecurityError
kastas iväg.
Var försiktig med checkPolicyFile
om du laddar ned ett ljud från en URL där HTTP-omdirigeringar på serversidan kanske används. Flash Player eller AIR försöker hämta principfiler som motsvarar egenskapen url
för URLRequest-objektet som skickades till Sound.load()
. Om den slutliga ljudfilen kommer från en annan URL på grund av HTTP-omdirigeringar kanske den eller de ursprungligen laddade ned principfilerna inte gäller för ljudfilens slutliga URL, det vill säga den URL som gäller ur säkerhetssynpunkt.
Om du hamnar i den här situationen kan du lösa den på följande sätt. Om du tar emot en progress
- eller complete
-händelse kan du undersöka värdet för Sound.url
-egenskapen som innehåller ljudets slutliga URL. Sedan anropar du Security.loadPolicyFile()
-metoden med en principfil-URL som du beräknar baserad på ljudets slutliga URL. Slutligen avfrågar du värdet för Sound.id3
tills inget undantag utlöses.
Detta gäller inte för innehåll i AIR:s programsandlåda. Innehåll i programsandlådan har alltid programmerad åtkomst till ljudinnehåll, oavsett ursprung.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Relaterade API-element
SoundLoaderContext | () | Konstruktor |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skapar ett nytt objekt för ljudinläsningskontext.
ParametrarbufferTime:Number (default = 1000 ) — Hur många sekunder ett direktuppspelat ljud ska förhandsinläsas till en buffert innan direktuppspelningen startar.
| |
checkPolicyFile:Boolean (default = false ) — Anger om det ska ske en kontroll av huruvida någon URL-principfil finns när objektet läses in (true ) eller inte.
|
Exempel ( Så här använder du exemplet )
Den första parametern i ett SoundLoaderContext-objekt (context
) används för att öka standardbuffertvärdet (en sekund) till tre sekunder. (Värdet anges i millisekunder.) Om den andra parametern i SoundLoaderContext-objektet ställs in på true
, kontrollerar Flash Player om det finns en korsdomänprincipfil när objektet läses in. Här är den inställd på standardvärdet false
, så ingen principfil kommer att kontrolleras. Ljudobjektets load()
-metod använder kontextinställningen för att se till att tre sekunder avsätts till att läsa in ljudet i en buffert innan direktuppspelningen av ljudet startar. URLRequest
-objektet avgör platsen för filen, som är en poddsändning från Adobe. Om ett IOErrorEvent.IO_ERROR
-fel uppstår under inläsningen av ljudfilen anropas metoden errorHandler()
.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 01:40 PM Z