Följande ljudrelaterade API:er i ActionScript 3.0 har säkerhetsbegränsningar:
-
Metoden
SoundMixer.computeSpectrum()
– Tillåts alltid för kod som körs i samma säkerhetssandlåda som ljudfilen. För kod som körs i andra sandlådor används säkerhetskontroller.
-
Metoden
SoundMixer.stopAll()
– Tillåts alltid för kod som körs i samma säkerhetssandlåda som ljudfilen. För filer i andra sandlådor finns det säkerhetskontroller.
-
Egenskapen
id3
för klassen Sound – tillåts alltid för SWF-filer som finns i samma säkerhetssandlåda som ljudfilen. För kod som körs i andra sandlådor används säkerhetskontroller.
Varje ljud har två typer av associerade sandlådor; en för innehållet och en för ägaren.
-
Den ursprungliga domänen för ljudet utgör innehållssandlådan och denna avgör om data kan extraheras från ljudet via egenskapen
id3
och metoden
SoundMixer.computeSpectrum()
.
-
Objektet som startade ljuduppspelningen utgör ägarsandlådan och detta avgör om ljudet kan stoppas via metoden
SoundMixer.stopAll()
.
Om du läser in ljudet med metoden
load()
i klassen Sound kan du ange parametern
context
, som är ett SoundLoaderContext-objekt. Om du anger egenskapen
checkPolicyFile
för SoundLoaderContext-objektet till
true
söker körningen efter en URL-principfil på den server från vilken ljudet lästes in. Om det finns en principfil som godkänner domänen för den kod som ska läsas in får koden åtkomst till egenskapen
id
för Sound-objektet, annars får den inte åtkomst. Genom att dessutom ange egenskapen
checkPolicyFile
kan metoden
SoundMixer.computeSpectrum()
användas för inlästa ljud.
Du kan använda metoden
SoundMixer.areSoundsInaccessible()
för att ta reda på om ett anrop till metoden
SoundMixer.stopAll()
inte kommer att stoppa alla ljud, på grund av att anroparen saknar åtkomst till sandlådan för en eller flera ljudägare.
Genom anrop av metoden
SoundMixer.stopAll()
stoppas dessa ljud vars ägarsandlåda är densamma som för den som anropar
stopAll()
. Den stoppar även de ljud vars uppspelning startades med SWF-filer som har anropat metoden
Security.allowDomain()
för att tillåta åtkomst av domänen med SWF-filen som anropar metoden
stopAll()
. Några andra ljud stoppas inte och förekomsten av dessa ljud kan upptäckas genom anrop av metoden
SoundMixer.areSoundsInaccessible()
.
För anrop av metoden
computeSpectrum()
krävs att alla ljud som spelas upp antingen är från samma sandlåda som anropande objekt av metoden eller från en källa som har tilldelats behörighet till anroparens sandlåda, i annat fall genereras ett SecurityError-undantag. För ljud som lästs in från inbäddade ljud i ett bibliotek i en SWF-fil tilldelas behörighet genom ett anrop till metoden
Security.allowDomain()
i den inlästa SWF-filen. För ljud som lästs in från andra källor än SWF-filer (MP3-filer eller videofiler) är det en URL-principfil på källservern som beviljar tillgång till data i inlästa medier.
Mer information finns i
Författarinställningar (för utvecklare)
och
Webbplatsinställningar (principfiler)
.
För åtkomst till ljuddata från RTMP-strömmar måste du tillåta åtkomst på servern. Använd egenskapen
Client.audioSampleAccess
för ActionScript på serversidan om du vill tillåta åtkomst till särskilda kataloger på Flash Media Server. Mer information finns i
Språkreferens för ActionScript på server
.