Pakiet | flash.media |
Klasa | public class SoundLoaderContext |
Dziedziczenie | SoundLoaderContext Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
klasy Sound.
Korzystając z tej klasy, należy wziąć pod uwagę następujący model zabezpieczeń.
- Ładowanie i odtwarzanie dźwięku nie jest dozwolone, jeśli wywołujący plik znajduje się w sieciowym obszarze izolowanym, a ładowany plik dźwiękowy jest lokalny.
- Domyślnie ładowanie i odtwarzanie dźwięku nie jest dozwolone, jeśli wywołujący plik jest lokalny i podejmuje próby załadowania i odtworzenia dźwięku z lokalizacji zdalnej. Aby zezwolić na takie zachowanie użytkownik jawnie nadaje uprawnienie.
- Niektóre operacje obsługujące dźwięk mają ograniczony dostęp. Plik, znajdujący się w innej domenie, nie może uzyskać dostępu do danych w ładowanym dźwięku, chyba że zostanie zaimplementowany plik reguł URL. Interfejsami API powiązanymi z obiektem Sound podlegającymi temu ograniczeniu jest właściwość
Sound.id3
oraz metodySoundMixer.computeSpectrum()
,SoundMixer.bufferTime
iSoundTransform()
.
Jednak w aplikacji Adobe AIR zawartość obszaru izolowanego application
(zawartość instalowana razem z aplikacją AIR) nie jest ograniczana przez te reguły zabezpieczeń.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
bufferTime : Number = 1000
Czas (w sekundach) wstępnego ładowania dźwięku do bufora przed rozpoczęciem strumieniowego przesyłania audio. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Określa, czy przed rozpoczęciem ładowania dźwięku aplikacja powinna podjąć próbę załadowania (z tego samego serwera) pliku reguł URL. | SoundLoaderContext | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy nowy obiekt reprezentujący kontekst ładowania dźwięków. | SoundLoaderContext | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
bufferTime | właściwość |
public var bufferTime:Number = 1000
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czas (w sekundach) wstępnego wczytywania dźwięku do bufora przed rozpoczęciem strumieniowego przesyłania audio.
Należy zauważyć, że nie można nadpisać wartości SoundLoaderContext.bufferTime
ustawiając globalnie właściwość SoundMixer.bufferTime
. Właściwość SoundMixer.bufferTime
wpływa jedynie na czas buforowania dźwięków przesyłanych strumieniowo osadzonych w pliku SWF i jest niezależna od dynamicznie tworzonych obiektów klasy Sound (tj. obiektów klasy Sound tworzonych w języku ActionScript).
checkPolicyFile | właściwość |
public var checkPolicyFile:Boolean = false
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Określa, czy przed rozpoczęciem ładowania dźwięku aplikacja powinna podjąć próbę załadowania (z tego samego serwera) pliku reguł URL. Ta właściwość ma zastosowanie do dźwięków, które są ładowane spoza domeny wywołującego pliku za pomocą metody Sound.load()
.
Tę właściwość należy ustawić na wartość true
, jeśli dźwięk jest ładowany spoza domeny pliku wywołującego i kod w pliku wywołującym wymaga niskopoziomowego dostępu do danych dźwięku. Przykłady dostępu niskiego poziomu do danych dźwięku obejmują odwoływanie się do właściwości Sound.id3
w celu pobrania obiektu ID3Info lub wywołanie metody SoundMixer.computeSpectrum()
w celu pobrania próbek dźwiękowych z załadowanego dźwięku. Próba uzyskania dostępu do danych pliku dźwiękowego w czasie ładowania bez ustawienia właściwości checkPolicyFile
na wartość true
może skutkować wyjątkiem SecurityError, ponieważ wymagany plik reguł nie został pobrany.
Jeśli nie ma potrzeby dostępu niskiego poziomu do danych ładowanego dźwięku, należy unikać ustawiania wartości true
we właściwości checkPolicyFile
. Sprawdzanie pliku reguł ogranicza szerokość pasma sieciowego i może opóźnić rozpoczęcie pobierania, dlatego należy używać go tylko wtedy, gdy jest to konieczne.
Po wywołaniu metody Sound.load()
za pomocą parametru SoundLoaderContext.checkPolicyFile
ustawionego na true
, program Flash Player lub środowisko AIR musi pomyślnie pobrać odpowiedni plik reguł URL lub określić, że taki plik nie istnieje — dopiero potem rozpocznie się pobieranie określonego dźwięku. Program Flash Player lub środowisko AIR wykonuje następujące operacje (w przedstawionej kolejności) w celu zweryfikowania istnienia pliku reguł:
- Program Flash Player lub środowisko AIR uwzględnia pliki reguł, które zostały już pobrane.
- Program Flash Player lub środowisko AIR podejmuje próbę pobrania oczekujących plików reguł określonych w wywołaniach metody
Security.loadPolicyFile()
. - Program Flash Player lub środowisko AIR podejmuje próbę pobrania pliku reguł z lokalizacji domyślnej, która jest zgodna z adresem URL dźwięku — jest to
/crossdomain.xml
na tym samym serwerze, coURLRequest.url
. (Adres URL dźwięku jest określony we właściwościurl
obiektu URLRequest przekazanego do metodySound.load()
lub w funkcji konstruktora Sound()).
We wszystkich przypadkach program Flash Player lub środowisko AIR wymaga, aby odpowiedni plik reguł znajdował się na serwerze dźwięku, aby zapewniał dostęp do pliku dźwięku w URLRequest.url
za sprawą lokalizacji pliku reguł oraz, aby umożliwiał domenie wywołującego pliku uzyskanie dostępu do pliku, za pośrednictwem jednego lub większej liczby znaczników <allow-access-from>
.
Jeśli dla parametru checkPolicyFile
zostanie ustawiona wartość true
, program Flash Player lub środowisko AIR będzie oczekiwać do czasu zweryfikowania pliku reguł — dopiero wówczas rozpocznie ładowanie pliku. Należy zaczekać z wykonaniem jakichkolwiek operacji niskiego poziomu na danych dźwięku takich, jak wywołanie Sound.id3
lub metody SoundMixer.computeSpectrum()
, do czasu wywołania zdarzenia progress
i complete
z obiektu Sound.
Jeśli dla parametru checkPolicyFile
zostanie ustawiona wartość true
, ale nie zostanie znaleziony żaden odpowiedni plik reguł, nie zostanie wygenerowany błąd do czasu wykonania operacji, w której wymagany będzie plik reguł — wówczas program Flash Player lub środowisko AIR zgłosi wyjątek SecurityError
. Po otrzymaniu zdarzenia complete
można przetestować, czy właściwy plik reguł został odnaleziony przez pobranie wartości właściwości Sound.id3
z bloku try
i zobaczyć, czy zgłoszony zostanie wyjątek SecurityError
.
Korzystając z właściwości checkPolicyFile
należy zachować ostrożność, jeśli dźwięk pobierany jest za pomocą adresu URL, który używa przekierowań HTTP po stronie serwera. Program Flash Player lub środowisko AIR podejmuje próbę pobrania plików reguł, które są zgodne z właściwością url
obiektu URLRequest przekazanego do metody Sound.load()
. Jeśli z powodu przekierowań HTTP końcowy plik dźwiękowy pochodzi z innego adresu URL, wtedy początkowo pobrane pliki reguł mogą nie odpowiadać adresowi URL dźwięku końcowego, który jest adresem URL mającym znaczenie dla decyzji dotyczących zabezpieczeń.
Jedno z możliwych rozwiązań takiej sytuacji przedstawiono poniżej. Po otrzymaniu zdarzenia progress
lub complete
można przeprowadzić kontrolę wartości właściwości Sound.url
, która zawiera adres URL końcowego pliku dźwiękowego. Następnie należy wywołać metodę Security.loadPolicyFile()
z adresem URL pliku reguł, który został wyznaczony na podstawie adresu URL końcowego pliku dźwiękowego. Na końcu należy odpytywać Sound.id3
do momentu, gdy już żaden wyjątek nie będzie zgłaszany.
Ta sytuacja nie znajduje zastosowania dla treści w obszarze izolowanym aplikacji AIR. Treść w obszarze izolowanym aplikacji ma zawsze dostęp programowy do treści dźwięku, bez względu na jego pochodzenie.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Powiązane elementy interfejsu API
SoundLoaderContext | () | Konstruktor |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy nowy obiekt reprezentujący kontekst wczytywania dźwięków.
ParametrybufferTime:Number (default = 1000 ) — Czas (w sekundach) wstępnego ładowania dźwięku do bufora przed rozpoczęciem generowania strumienia dźwiękowego.
| |
checkPolicyFile:Boolean (default = false ) — Określa, czy przed załadowaniem obiektu należy sprawdzić istnienie pliku reguł URL (wartość true ) czy nie.
|
Przykład ( Sposób korzystania z tego przykładu )
Pierwszy parametr obiektu SoundLoaderContext (context
) jest używany w celu zwiększenia domyślnej wartości bufora z jednej do trzech sekund. (Wartość zapisana w milisekundach.) Jeśli drugi parametr obiektu SoundLoaderContext ma wartość true
, program Flash Player sprawdzi istnienie międzydomenowego pliku reguł podczas ładowania·obiektu. Ustawienie w tym miejscu wartości domyślnej false
spowoduje, że plik reguł nie będzie sprawdzany. Metoda load()
obiektu dźwiękowego skorzysta z ustawień kontekstu, aby upewnić się, że zanim dźwięk zostanie odtworzony, wstępne ładowanie strumienia dźwięku do bufora potrwa trzy sekundy. Obiekt URLRequest
określa lokalizację pliku, który jest podkastem dostarczonym przez firmę Adobe. Jeśli podczas ładowania pliku dźwiękowego wystąpi błąd IOErrorEvent.IO_ERROR
, wywołana zostanie metoda 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, 12:06 PM Z