Pakiet | flash.media |
Klasa | public class Sound |
Dziedziczenie | Sound EventDispatcher Object |
Podklasy | SoundAsset |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
W programie Flash Player 10 oraz w środowisku AIR 1.5 i ich wersjach późniejszych można również korzystać z tej klasy w celu pracy z dźwiękami generowanymi dynamicznie. W takim przypadku obiekt Sound korzysta z funkcji przypisanej do modułu obsługi zdarzeń sampleData
w celu odpytywania o dane dźwięków. Dźwięk jest odtwarzany w miarę jego odbierania z obiektu ByteArray, do którego wprowadzane są dane dźwięków. Za pomocą metody Sound.extract()
można wyodrębniać dźwięki z obiektu Sound, a następnie można modyfikować dźwięki przed ponownym zapisaniem ich w strumieniu w celu odtworzenia.
Aby kontrolować dźwięki osadzone w pliku SWF, należy skorzystać z właściwości klasy SoundMixer.
Uwaga: interfejs API klasy Sound w języku ActionScript 3. różni się od interfejsu użytego w języku ActionScript 2.0. W ActionScript 3.0 nie ma możliwości porządkowania obiektów dźwięku w hierarchię w celu kontrolowania ich właściwości.
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. Użytkownik musi jawnie nadać uprawnienie, aby zezwolić na tego typu dostęp.
- 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 międzydomenowy plik reguł. Interfejsami API powiązanymi z obiektem Sound podlegającymi temu ograniczeniu są właściwość
Sound.id3
metodaSoundMixer.computeSpectrum()
, właściwośćSoundMixer.bufferTime
i klasaSoundTransform
.
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.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
bytesLoaded : uint [tylko do odczytu]
Zwraca aktualnie dostępną liczbę bajtów tego obiektu dźwiękowego. | Sound | ||
bytesTotal : int [tylko do odczytu]
Zwraca całkowitą liczbę bajtów tego obiektu dźwiękowego. | Sound | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
id3 : ID3Info [tylko do odczytu]
Zapewnia dostęp do metadanych będących częścią pliku MP3. | Sound | ||
isBuffering : Boolean [tylko do odczytu]
Zwraca stan buforowania zewnętrznych plików MP3. | Sound | ||
isURLInaccessible : Boolean [tylko do odczytu]
Wskazuje, czy właściwość Sound.url została przycięta. | Sound | ||
length : Number [tylko do odczytu]
Długość bieżącego dźwięku w milisekundach. | Sound | ||
url : String [tylko do odczytu]
Adres URL strony, z której załadowano dźwięk. | Sound |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy nowy obiekt Sound. | Sound | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Zamyka strumień, powodując zakończenie ładowania wszelkich danych. | Sound | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Wyodrębnia nieprzetworzone dane dźwiękowe z obiektu Sound. | Sound | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
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 | ||
Inicjuje ładowanie zewnętrznego pliku MP3 spod określonego adresu URL. | Sound | ||
Wczytuje dane dźwięku MP3 z obiektu ByteArray do obiektu Sound. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Wczytuje dane dźwięku PCM (32-bitowe wartości zmiennoprzecinkowe) z obiektu ByteArray do obiektu Sound. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Generuje nowy obiekt SoundChannel, umożliwiający odtwarzanie dźwięku. | Sound | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
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 | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
Wywoływane po pomyślnym załadowaniu danych. | Sound | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Wywoływane przez obiekt Sound, gdy są dostępne dane ID3 dotyczące dźwięku MP3. | Sound | |||
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający ładowanie danych. | Sound | |||
Wywoływane po rozpoczęciu wczytywania. | Sound | |||
Wywoływane w trakcie stopniowego ładowania danych. | Sound | |||
Wywoływane, gdy środowisko wykonawcze zażąda nowych danych audio. | Sound |
bytesLoaded | właściwość |
bytesLoaded:uint
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zwraca aktualnie dostępną liczbę bajtów tego obiektu dźwiękowego. Ta właściwość jest zazwyczaj użyteczna tylko dla plików ładowanych zewnętrznie.
Implementacja
public function get bytesLoaded():uint
bytesTotal | właściwość |
id3 | właściwość |
id3:ID3Info
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapewnia dostęp do metadanych będących częścią pliku MP3.
Pliki dźwiękowe MP3 mogą zawierać znaczniki ID3, które udostępniają metadane na temat pliku. Jeśli dźwięk w formacie MP3 załadowany za pomocą metody Sound.load()
zawiera znaczniki ID3, istnieje możliwość odpytania tych właściwości. Obsługiwane są tylko znaczniki ID3, które korzystają z zestawu znaków standardu UTF-8.
Program Flash Player 9 i późniejsze wersje oraz środowisko AIR obsługują znaczniki ID3 2.0, a w szczególności 2.3 i 2.4. W poniższych tabelach przedstawiono standardowe znaczniki ID3 2.0 oraz typ zawartości, jaką reprezentują te znaczniki. Właściwość Sound.id3
umożliwia dostęp do tych znaczników za pomocą formatu my_sound.id3.COMM
, my_sound.id3.TIME
itd. Pierwsza tabela opisuje znaczniki, do których można uzyskiwać dostęp za pośrednictwem nazwy właściwości ID3 2.0 lub nazwy właściwości ActionScript. Druga tabela przedstawia znaczniki ID3, które są obsługiwane, ale nie zawierają predefiniowanych właściwości w ActionScript.
Znacznik ID3 2.0 | Odpowiednie właściwości klasy Sound |
COMM | Sound.id3.comment |
TALB | Sound.id3.album |
TCON | Sound.id3.genre |
TIT2 | Sound.id3.songName |
TPE1 | Sound.id3.artist |
TRCK | Sound.id3.track |
TYER | Sound.id3.year |
Poniższa tabela przedstawia znaczniki ID3, które są obsługiwane, ale nie zawierają predefiniowanych właściwości w klasie Sound. Dostęp do nich uzyskuje się, wywołując mySound.id3.TFLT
, mySound.id3.TIME
, itd. UWAGA: Żaden z tych znaczników nie jest obsługiwany w programie Flash Lite 4.
Właściwość | Opis |
TFLT | Typ pliku |
TIME | Godzina |
TIT1 | opis grupy zawartości |
TIT2 | tytuł, nazwa utworu, opis zawartości |
TIT3 | rozwinięcie podtytułu lub opisu |
TKEY | klucz początkowy |
TLAN | Języki |
TLEN | Długość |
TMED | Typ nośnika |
TOAL | oryginalny tytuł albumu, filmu lub pokazu |
TOFN | oryginalna nazwa pliku |
TOLY | oryginalny autor słów/tekściarz |
TOPE | oryginalny wykonawca/zespół |
TORY | oryginalny rok wydania |
TOWN | Właściciel pliku/licencji |
TPE1 | główny wykonawca/solista |
TPE2 | zespół/orkiestra/akompaniament |
TPE3 | uzupełnienie informacji o dyrygencie/wykonawcy |
TPE4 | Autor interpretacji, remiksu lub innej modyfikacji |
TPOS | część zestawu |
TPUB | Publisher |
TRCK | numer ścieżki/pozycja w zestawie |
TRDA | daty nagrań |
TRSN | nazwa internetowej stacji radiowej |
TRSO | właściciel internetowej stacji radiowej |
TSIZ | Wielkość |
TSRC | Kod ISRC |
TSSE | oprogramowanie i sprzęt oraz ustawienia, wykorzystane podczas kodowania |
TYER | Rok |
WXXX | klatka z łączem URL |
Korzystając z tej właściwości, należy wziąć pod uwagę model zabezpieczeń programu Flash Player.
- Właściwość
id3
obiektu Sound jest zawsze dozwolona dla plików SWF, które znajdują się w tym samym obszarze izolowanym zabezpieczeń, co plik dźwiękowy. Dla plików z innego obszaru izolowanego sprawdzane są zabezpieczenia. - Ładując dźwięk za pomocą metody
load()
klasy Sound, można określić parametrcontext
, którym należy uczynić obiekt SoundLoaderContext. Jeśli dla właściwościcheckPolicyFile
obiektu SoundLoaderContext zostanie przypisana wartośćtrue
, program Flash Player sprawdzi istnienie pliku reguł URL na serwerze, z którego ładowany jest dźwięk. Jeśli plik reguł istnieje i umożliwia dostęp z domeny ładującego pliku SWF, wówczas plik może uzyskiwać dostęp do właściwościid3
obiektu Sound; w przeciwnym wypadku nie może.
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.
Implementacja
public function get id3():ID3Info
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
W konstruktorze ładowany jest plik dźwiękowy, lecz plik nie jest ustawiany w stan odtwarzania. W tym miejscu założono, że plik znajduje się w katalogu SWF. Aby odczytać znaczniki ID3 załadowanego pliku dźwiękowego, system musi posiadać uprawnienie. Jeśli w pliku zawarte są informacje ID3 i program posiada zezwolenie na ich odczyt, wywołane zostanie zdarzenie Event.ID3
i właściwość id3
pliku dźwiękowego zostanie zapełniona. Właściwość id3
zawiera obiekt ID3Info
, w który przechowywane są wszystkie informacje ID3.
W metodzie id3Handler()
znaczniki ID3 pliku przechowywane są we właściwości id3
, obiekt klasy ID3Info. Aby wyświetlić listę znaczników ID3 tworzona jest instancja pola tekstowego. Pętla „for” iteruje przez wszystkie znaczniki ID3 2.0 i dołącza nazwę i wartość do zawartości pola tekstowego. Za pomocą właściwości ID3Info
dołączana jest również nazwa wykonawcy, nazwa utworu oraz tytuł albumu. Język ActionScript 3.0 oraz program Flash Player 9 i kolejne wersje zapewniają znaczniki ID3 2.0, szczególnie w wersji 2.3 oraz 2.4. Iterując przez wszystkie właściwości, podobnie jak w pętli „for”, pojawią się jedynie znaczniki ID3 2.0. Jednak, dane z wcześniejszych wersji są również przechowywane we właściwości id3
utworów i dostęp do niech można uzyskać za pomocą właściwości klasy ID3 info. Znaczniki ID3 1.0 znajdują się na początku pliku, podczas gdy znaczniki ID3 2.0 znajdują się na jego początku. (Zdarza się, że pliki mają obie, wcześniejszą i późniejszą, wersję znaczników w tym samym miejscu). Jeśli plik został zakodowany obiema wersjami znaczników (wersją 1.0 i 2.0) na początku i na końcu pliku, metoda id3Handler()
zostanie wywołana dwukrotnie. Najpierw odczytywana jest wersja 2.0, a następnie wersja 1.0. Jeśli dostępny jest tylko znacznik ID3 1.0, wtedy informacje dostępne są za pomocą właściwości ID3 info, na przykład id3.songname
. Dla znacznika ID3 2.0, właściwość id3.TITS
pobierze nazwę utworu za pomocą nowego znacznika (TITS).
Należy zauważyć, że dla tego przykładu nie została napisana obsługa błędu i jeśli zawartość znacznika ID3 jest długa, wynik może wyjść poza widoczny obszar.
package { import flash.display.Sprite; import flash.media.Sound; import flash.net.URLRequest; import flash.media.ID3Info; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; public class Sound_id3Example extends Sprite { private var snd:Sound = new Sound(); private var myTextField:TextField = new TextField(); public function Sound_id3Example() { snd.addEventListener(Event.ID3, id3Handler); snd.load(new URLRequest("mySound.mp3")); } private function id3Handler(event:Event):void { var id3:ID3Info = snd.id3; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.border = true; myTextField.appendText("Received ID3 Info: \n"); for (var propName:String in id3) { myTextField.appendText(propName + " = " + id3[propName] + "\n"); } myTextField.appendText("\n" + "Artist: " + id3.artist + "\n"); myTextField.appendText("Song name: " + id3.songName + "\n"); myTextField.appendText("Album: " + id3.album + "\n\n"); this.addChild(myTextField); } } }
isBuffering | właściwość |
isBuffering:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zwraca stan buforowania zewnętrznych plików MP3. Jeśli jej wartością jest true
aktualnie odtwarzany dźwięk zostanie wstrzymany, w momencie oczekiwania na większą ilość danych.
Implementacja
public function get isBuffering():Boolean
isURLInaccessible | właściwość |
isURLInaccessible:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Wskazuje, czy właściwość Sound.url
została przycięta. Gdy właściwość isURLInaccessible
ma wartość true
, wartość Sound.url
jest wyłącznie domeną adresu URL, spod którego ostatecznie dźwięk został załadowany. Na przykład: właściwość zostanie przycięta, jeśli treść załadowano z http://www.adobe.com/assets/hello.mp3
, a właściwość Sound.url
ma wartość http://www.adobe.com
. Właściwość isURLInaccessible
ma wartość true
tylko wówczas, gdy spełnione są wszystkie następujące warunki:
- Doszło do przekierowania HTTP podczas ładowania pliku dźwiękowego.
- Plik SWF wywołujący metodę
Sound.load()
pochodzi z domeny innej niż ostateczny adres URL pliku dźwiękowego. - Plik SWF wywołujący metodę
Sound.load()
nie ma uprawnień dostępu do pliku dźwiękowego. Zezwolenie na dostęp do pliku dźwiękowego udzielane jest na tej samej zasadzie, jak w przypadku właściwościSound.id3
: należy ustanowić plik reguł i skorzystać z właściwościSoundLoaderContext.checkPolicyFile
.
Uwaga: Właściwość isURLInaccessible
została dodana dla programu Flash Player 10.1 i środowiska AIR 2.0. Jednak ta właściwość jest dostępna dla plików SWF wszystkich wersji, pod warunkiem że środowisko wykonawcze Flash obsługuje tę właściwość. Dlatego stosowanie narzędzi do tworzenia treści w trybie „ścisłym” powoduje błąd kompilacji. W celu obejścia błędu należy użyć składni przekierowania mySound["isURLInaccessible"]
lub wyłączyć tryb ścisły. Jeśli do tworzenia aplikacji używany jest program Flash Professional CS5 lub środowisko Flex SDK 4.1, można wykorzystywać i kompilować odwołania do tego elementu interfejsu API dla środowisk wykonawczych wydanych wcześniej niż wersje Flash Player 10.1 i AIR 2.
W przypadku treści aplikacji w środowisku AIR ta właściwość ma zawsze wartość false
.
Implementacja
public function get isURLInaccessible():Boolean
Powiązane elementy interfejsu API
length | właściwość |
url | właściwość |
url:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Adres URL strony, z której załadowano dźwięk. Tę właściwość należy stosować jedynie do obiektów Sound, które zostały załadowane za pomocą metody Sound.load()
. Dla obiektów Sound, które są skojarzone z dźwiękami z biblioteki pliku SWF, wartość właściwości url
jest równa null
.
Przy pierwszym wywołaniu metody Sound.load()
, właściwość url
ma wartość początkową null
, ponieważ ostateczny adres URL nie jest jeszcze znany. Właściwość url
będzie miała wartość różną od null tuż po wywołaniu zdarzenia open
z obiektu Sound.
Właściwość url
zawiera ostateczny, bezwzględny adres URL, z którego został załadowany dźwięk. Wartością właściwości url
jest zazwyczaj ta sama wartość, która przekazywana jest do parametru stream
metody Sound.load()
. Jeśli jednak do metody Sound.load()
przekazany zostanie względny adres URL, wartość właściwości url
będzie reprezentowała bezwzględny adres URL. Ponadto, jeśli oryginalny adres URL zostanie przekierowany przez serwer HTTP, wartość właściwości url
będzie odzwierciedlać ostateczny adres URL z którego faktycznie pobrany został plik dźwiękowy. Zgłoszenie ostatecznego, bezwzględnego adresu URL jest równoważne z działaniem właściwości LoaderInfo.url
.
W niektórych przypadkach wartość właściwości url
jest przycięta; szczegółowe informacje zawiera opis właściwości isURLInaccessible
.
Implementacja
public function get url():String
Powiązane elementy interfejsu API
Sound | () | Konstruktor |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy nowy obiekt Sound. Przekazanie poprawnego obiektu URLRequest do konstruktora Sound powoduje automatyczne wywołanie funkcji load()
dla obiektu Sound. Nie przekazanie poprawnego obiektu URLRequest do konstruktora Sound powoduje, że użytkownik jest zmuszony do samodzielnego wywołania funkcji load()
dla obiektu Sound, w przeciwnym razie strumień nie zostanie załadowany.
Po wywołaniu funkcji load()
na obiekcie Sound nie istnieje możliwość załadowania w późniejszym czasie innego pliku dźwiękowego do tego obiektu. Aby załadować inny plik dźwiękowy, należy utworzyć nowy obiekt Sound.
load()
można użyć modułu obsługi zdarzeń sampleData
.
Parametry stream:URLRequest (default = null ) — Adres URL wskazujący zewnętrzny plik MP3.
| |
context:SoundLoaderContext (default = null ) — Opcjonalny obiekt kontekstowy SoundLoader może definiować czas dla bufora (minimalna liczba milisekund danych pliku MP3, które będą przechowywane w buforze obiektu Sound) oraz określać, czy aplikacja powinna przed załadowaniem dźwięku sprawdzić istnienie międzydomenowego pliku reguł.
|
close | () | metoda |
public function close():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zamyka strumień, powodując zakończenie ładowania wszelkich danych. Żadne dane nie zostaną odczytane ze strumienia po wywołaniu metody close()
.
Zgłasza
IOError — Nie udało się zamknąć strumienia lub strumień nie był otwarty.
|
Przykład ( Sposób korzystania z tego przykładu )
Sound.close()
i spowoduje zatrzymanie strumieniowej transmisji dźwięku.
W konstruktorze dla przycisku Start i Stop tworzone jest pole tekstowe. Kliknięcie na pole tekstowe wywołuje metodę clickHandler()
. Obsługuje rozpoczęcie i zatrzymanie odtwarzania pliku dźwiękowego. Należy zauważyć, że zatrzymanie odtwarzania pliku dźwiękowego, którego większa część mogła już zostać załadowana, może zająć trochę czasu w zależności od połączenia sieciowego lub momentu naciśnięcia przycisku Stop. Blok try...catch
jest używany w celu przechwycenia błędu wejścia/wyjścia, który może pojawić się w trakcie zamykania strumienia. Na przykład, jeśli dźwięk jest ładowany z katalogu lokalnego (nie jest przesyłany strumieniowo), przechwycony zostanie błąd o numerze 2029, informujący że dany obiekt URLStream nie ma otwartego strumienia.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.errors.IOError; import flash.events.IOErrorEvent; public class Sound_closeExample extends Sprite { private var snd:Sound = new Sound(); private var button:TextField = new TextField(); private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); public function Sound_closeExample() { button.x = 10; button.y = 10; button.text = "START"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.LEFT; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { if(button.text == "START") { snd.load(req); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); button.text = "STOP"; } else if(button.text == "STOP") { try { snd.close(); button.text = "Wait for loaded stream to finish."; } catch (error:IOError) { button.text = "Couldn't close stream " + error.message; } } } private function errorHandler(event:IOErrorEvent):void { button.text = "Couldn't load the file " + event.text; } } }
extract | () | metoda |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Wyodrębnia nieprzetworzone dane dźwiękowe z obiektu Sound.
Ta metoda jest przeznaczona do pracy z dźwiękiem generowanym dynamicznie, przy użyciu funkcji przypisanej do zdarzenia sampleData
dla innego obiektu Sound. Oznacza to, że metody tej można używać do wyodrębniania danych dźwięku z obiektu Sound. Można wówczas zapisać dane do tablicy bajtowej, której inny obiekt Sound używa do strumieniowania dynamicznych danych audio.
Dane audio są umieszczane w docelowej tablicy bajtowej począwszy od bieżącej pozycji tablicy bajtowej. Dane audio są zawsze udostępniane jako dane stereofoniczne o częstotliwości próbkowania 44100 Hz. Typem przykładowym jest wartość 32-bitowa zmiennoprzecinkowa, którą można konwertować na format liczbowy za pomocą metody ByteArray.readFloat()
.
Parametry
target:ByteArray — Obiekt ByteArray, w którym umieszczane są wyodrębnione próbki dźwięków.
| |
length:Number — Liczba próbek dźwięków przeznaczona do wyodrębniania. Próbka zawiera kanały lewy i prawy — tj. dwie wartości 32-bitowe zmiennoprzecinkowe.
| |
startPosition:Number (default = -1 ) — Próbka, od której rozpoczyna się wyodrębnianie. Jeśli użytkownik nie określi wartości, pierwsze wywołanie metody Sound.extract() rozpocznie się na początku dźwięku; kolejne wywołania bez wartości dla metody startPosition będą pojawiały się kolejno w całym pliku.
|
Number — Liczba próbek zapisanych w obiekcie ByteArray określonym w parametrze target .
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
extract()
klasy Sound w celu uzyskania dostępu do danych audio.
Dane pliku mp3 są ładowane do obiektu Sound sourceSnd
. Po załadowaniu danych pliku mp3 przez aplikację wywoływana jest funkcja loaded()
(moduł obsługi zdarzenia dla zdarzenia complete
obiektu sourceSnd
). Drugi obiekt Sound (outputSound
) jest używany do odtworzenia zmodyfikowanych danych audio. Obiekt outputSound
zawiera detektor zdarzeń sampleData
, dlatego obiekt ten okresowo wywołuje zdarzenia sampleData
po wywołaniu metody play()
. Metoda upOctave()
zwraca tablicę bajtową zmodyfikowanych danych audio w oparciu o źródłowe dane audio. Zwraca dane audio, które są wyższe o jedną oktawę, pomijając co drugą próbkę dźwięku w danych źródłowych. Moduł obsługi zdarzenia dla zdarzenia sampleData
zapisuje zwróconą tablicę bajtową we właściwości data
obiektu outputSound
. Właściwość data
tablicy bajtowej jest dołączana do wyjściowych danych audio dla obiektu outputSound
.
Aby przetestować ten przykład, należy dodać plik test.mp3 do tego samego katalogu, w którym znajduje się plik SWF.
var sourceSnd:Sound = new Sound(); var outputSnd:Sound = new Sound(); var urlReq:URLRequest = new URLRequest("test.mp3"); sourceSnd.load(urlReq); sourceSnd.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound); outputSnd.play(); } function processSound(event:SampleDataEvent):void { var bytes:ByteArray = new ByteArray(); sourceSnd.extract(bytes, 4096); event.data.writeBytes(upOctave(bytes)); } function upOctave(bytes:ByteArray):ByteArray { var returnBytes:ByteArray = new ByteArray(); bytes.position = 0; while(bytes.bytesAvailable > 0) { returnBytes.writeFloat(bytes.readFloat()); returnBytes.writeFloat(bytes.readFloat()); if (bytes.bytesAvailable > 0) { bytes.position += 8; } } return returnBytes; }
load | () | metoda |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Inicjuje wczytywanie zewnętrznego pliku MP3 spod określonego adresu URL. Zapewnienie poprawnego obiektu URLRequest dla konstruktora Sound powoduje wywołanie funkcji Sound.load()
za użytkownika. Funkcję Sound.load()
należy wywołać samodzielnie, jeśli do konstruktora Sound nie zostanie przekazany poprawny obiekt URLRequest lub przekazana zostanie wartość null
.
Po wywołaniu funkcji load()
na obiekcie Sound nie istnieje możliwość załadowania w późniejszym czasie innego pliku dźwiękowego do tego obiektu. Aby załadować inny plik dźwiękowy, należy utworzyć nowy obiekt Sound.
Korzystając z tej metody, należy wziąć pod uwagę model zabezpieczeń:
- Wywołanie metody
Sound.load()
jest niedozwolone, jeśli plik wywołujący znajduje się w lokalnym obszarze izolowanym systemu plików, a dźwięk znajduje się w obszarze izolowanym sieci. - Dostęp z lokalnego zaufanego obszaru izolowanego lub lokalnego obszaru izolowanego z dostępem do sieci wymaga uprawnień udzielonych przez witrynę sieci Web (za pośrednictwem pliku reguł URL).
- Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
- Można zapobiec korzystaniu z tej metody przez plik SWF, ustawiając parametr
allowNetworking
znacznikówobject
iembed
na stronie HTML z zawartością SWF.
W programie Flash Player 10 i nowszych wersjach, jeśli użyty zostanie wieloczęściowy nagłówek Content-Type (np. "multipart/form-data"), w którym przesyłane są pliki (wskazywane przez parametr "filename" w nagłówku "content-disposition" w treści operacji POST), wówczas operacja POST podlega regułom zabezpieczeń zastosowanym do wysyłania plików:
- Operację POST należy wykonać w odpowiedzi na działanie zainicjowane przez użytkownika, np. kliknięcie myszy lub naciśnięcie klawisza.
- Jeśli operacja POST jest operacją międzydomenową (cel operacji POST nie znajduje się na tym samym serwerze, co plik SWF, który wysyła żądanie POST), docelowy serwer musi dostarczyć plik reguł URL, który zezwoli na międzydomenowy dostęp.
Dla dowolnego wieloczęściowego nagłówka Content-Type również składnia musi być poprawna (zgodnie ze standardami RFC2046). Jeśli składnia okaże się niepoprawna, operacja POST będzie podlegać regułom zabezpieczeń stosowanym do wysyłania plików.
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.
Parametry
stream:URLRequest — Adres URL wskazujący zewnętrzny plik MP3.
| |
context:SoundLoaderContext (default = null ) — Opcjonalny obiekt kontekstowy SoundLoader może definiować czas dla bufora (minimalna liczba milisekund danych pliku MP3, które będą przechowywane w buforze obiektu Sound) oraz określać, czy aplikacja powinna przed wczytaniem dźwięku sprawdzić istnienie międzydomenowego pliku reguł.
|
Zgłasza
IOError — Niepowodzenie operacji ładowania pliku spowodował błąd sieci.
| |
SecurityError — Niezaufane pliki lokalne mogą nie mieć możliwości komunikowania się z siecią Internet. Można obejść ten problem przez zaklasyfikowanie pliku jako lokalnego z dostępem do sieci lub pliku zaufanego.
| |
SecurityError — Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
| |
IOError — Wartością właściwości digest obiektu stream nie jest wartość null . Należy tylko ustawić właściwość digest obiektu URLRequest w czasie wywoływania metody URLLoader.load() , gdy ładowany jest plik SWZ (składnik platformy Adobe).
|
Przykład ( Sposób korzystania z tego przykładu )
W konstruktorze obiekt URLRequest
jest tworzony w celu określenia lokalizacji pliku, który jest podkastem dostarczonym przez firmę Adobe. Plik jest ładowany w bloku try...catch
w celu przechwycenia błędu, który może pojawić się w trakcie ładowania pliku. Jeśli pojawił się błąd wejścia/wyjścia, wywoływana jest metoda errorHandler()
i w polu tekstowym wypisywany jest komunikat błędu przeznaczony dla raportu postępu. W trakcie operacji ładowania wywoływane jest zdarzenie ProgressEvent.PROGRESS
oraz metoda progressHandler()
. W tym miejscu zdarzenie ProgressEvent.PROGRESS
zostało użyte jako czasomierz do obliczenia postępu ładowania.
W metodzie progressHandler()
wartość właściwości bytesLoaded
, przekazana razem z obiektem ProgressEvent
, dzielona jest przez wartość właściwości bytesTotal
w celu uzyskania procentowej wartości ładowanych danych dźwiękowych. Następnie wartości te są wyświetlane w polu tekstowym. (Należy zauważyć, że jeśli plik jest niewielki, został zbuforowany lub znajduje się w katalogu lokalnym, postęp ładowania może zostać niezauważony).
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; public class Sound_loadExample extends Sprite { private var snd:Sound = new Sound(); private var statusTextField:TextField = new TextField(); public function Sound_loadExample(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(ProgressEvent.PROGRESS, progressHandler); this.addChild(statusTextField); } private function progressHandler(event:ProgressEvent):void { var loadTime:Number = event.bytesLoaded / event.bytesTotal; var LoadPercent:uint = Math.round(100 * loadTime); statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" + "Bytes being loaded: " + event.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + LoadPercent + "%.\n"; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
loadCompressedDataFromByteArray | () | metoda |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 3, Flash Player 11 |
Wczytuje dane dźwięku MP3 z obiektu ByteArray do obiektu Sound. Dane są odczytywane od bieżącego położenia obiektu ByteArray, a po zakończeniu operacji dla obiektu ByteArray jest ustawiane końcowe położenie zakresu o podanej długości w bajtach. Jeśli dane dźwięku MP3 zawierają dane ID3, podczas wywołania tej funkcji są wywoływane zdarzenia ID3. Ta funkcja wygeneruje wyjątek, jeśli obiekt ByteArray nie zawiera wystarczającej ilości danych.
Parametry
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | metoda |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 3, Flash Player 11 |
Wczytuje dane dźwięku PCM (32-bitowe wartości zmiennoprzecinkowe) z obiektu ByteArray do obiektu Sound. Dane są odczytywane od bieżącego położenia w obiekcie ByteArray, a po zakończeniu operacji dla obiektu ByteArray jest ustawiane końcowe położenie próbki o podanej długości w bajtach pomnożonej przez liczbę kanałów (1 lub 2 w przypadku ustawienia flagi dźwięku stereo).
Od wersji Flash Player 11.8 wprowadzono ograniczenie ilości danych dźwiękowych, jakie można przekazać do tej funkcji. W plikach SWF o wersji co najmniej 21 ta funkcja generuje wyjątek, jeśli ilość przekazanych do niej danych dźwiękowych obejmuje ponad 1800 sekund. Oznacza to, że stosunek liczby próbek do częstotliwości próbkowania nie powinien przekraczać 1800. W plikach SWF o wersji niższej niż 21 środowisko wykonawcze przestaje pracować, nie zgłaszając błędu, jeśli ilość przekazanych danych dźwiękowych obejmuje ponad 12 000 sekund. Ta funkcja jest dostępna tylko w celu zachowania zgodności wstecz.
Ta funkcja generuje wyjątek, jeśli obiekt ByteArray nie zawiera wystarczającej ilości danych.
Parametry
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | metoda |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Generuje nowy obiekt SoundChannel, umożliwiający odtwarzanie dźwięku. Metoda zwraca obiekt SoundChannel, który umożliwia zatrzymanie dźwięku i kontrolowanie głośności po uzyskaniu do niego dostępu. (Aby kontrolować głośność, przesunięcie oraz balans, należy uzyskać dostęp do obiektu SoundTransform skojarzonego z kanałem dźwiękowym).
Parametry
startTime:Number (default = 0 ) — Położenie początkowe (wartość w milisekundach), od którego należy rozpocząć odtwarzanie.
| |
loops:int (default = 0 ) — Definiuje liczbę powtórnego odtworzenia dźwięku (powrotów do wartości startTime ), zanim kanał dźwiękowy zatrzyma odtwarzanie.
| |
sndTransform:flash.media:SoundTransform (default = null ) — Początkowy obiekt SoundTransform skojarzony z kanałem dźwiękowym.
|
SoundChannel — Obiekt SoundChannel, z którego należy skorzystać w celu kontrolowania dźwięku. Metoda zwraca wartość null , jeśli użytkownik nie posiada karty dźwiękowej lub wyczerpane zostały dostępne kanały dźwiękowe. Maksymalna liczba kanałów dźwiękowych dostępnych jednocześnie to 32.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
Konstruktor wywołuje metodę Sound.load()
w celu rozpoczęcia ładowania danych dźwiękowych. Następnie wywoływana jest metoda Sound.play()
, która rozpocznie odtwarzanie dźwięku tuż po załadowaniu dostatecznej ilości danych. Metoda Sound.play()
zwraca obiekt SoundChannel, który może zostać użyty w celu kontrolowania odtwarzania dźwięku. W polu tekstowym wyświetlane są instrukcje. Aby upewnić się, że zawartość, od której użytkownik chce rozpocząć odtwarzanie dźwięku, została już załadowana, tworzony jest obiekt bar
klasy Sprite i wyświetlany po zakończeniu ładowania pliku. Zdarzenie Event.COMPLETE
wywoływane jest w momencie, gdy plik wywołujący metodę completeHandler()
zostanie pomyślnie załadowany. Następnie metoda completeHandler()
tworzy pasek i dodaje go do listy wyświetlania. (Aby wesprzeć interakcyjność, zamiast obiektu kształtu używany jest obiekt ikonki). Kliknięcie paska powoduje wywołanie metody clickHandler()
.
W metodzie clickHandler()
położenie współrzędnej x kliknięcia, event.localX
, jest używane w celu określenia miejsca, w którym użytkownik chce rozpocząć odtwarzanie pliku. Ponieważ pasek ma 100 pikseli i rozpoczyna się na współrzędnej x o wartości 100 pikseli, łatwo jest określić procentową wartość położenia. Od momentu załadowania pliku właściwość length
pliku dźwiękowego będzie miała wartość równą całkowitej długości pliku, w milisekundach. Za pomocą wartości długości pliku dźwiękowego oraz położenia w wierszu zostanie określone położenie początkowe dla pliku dźwiękowego. Po zatrzymaniu odtwarzania dźwięku, plik dźwiękowy rozpoczyna ponowne odtwarzanie od zaznaczonego położenia początkowego, które znajduje się za wartością parametru startTime
metody play()
.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.MouseEvent; import flash.media.Sound;; import flash.net.URLRequest; import flash.media.SoundChannel; import flash.events.ProgressEvent; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.IOErrorEvent; public class Sound_playExample1 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var infoTextField:TextField = new TextField(); public function Sound_playExample1() { var req:URLRequest = new URLRequest("MySound.mp3"); infoTextField.autoSize = TextFieldAutoSize.LEFT; infoTextField.text = "Please wait for the file to be loaded.\n" + "Then select from the bar to decide where the file should start."; snd.load(req); channel = snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(Event.COMPLETE, completeHandler); this.addChild(infoTextField); } private function completeHandler(event:Event):void { infoTextField.text = "File is ready."; var bar:Sprite = new Sprite(); bar.graphics.lineStyle(5, 0xFF0000); bar.graphics.moveTo(100, 100); bar.graphics.lineTo(200, 100); bar.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(bar); } private function clickHandler(event:MouseEvent):void { var position:uint = event.localX; var percent:uint = Math.round(position) - 100; var cue:uint = (percent / 100) * snd.length; channel.stop(); channel = snd.play(cue); } private function errorHandler(errorEvent:IOErrorEvent):void { infoTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
W konstruktorze ładowany jest dźwięk i tworzony jest nieskomplikowany prostokątny obiekt button
klasy Sprite. (Aby wesprzeć interakcyjność, zamiast obiektu kształtu używany jest obiekt ikony). W tym miejscu założono, że plik znajduje się w tym samym katalogu, co plik SWF. (Dla tego przykładu nie napisano kodu obsługi błędu).
Dwa detektory zdarzeń zostały ustawione, aby odpowiedzieć na pojedyncze lub podwójne kliknięcia myszą. Pojedyncze kliknięcie powoduje wywołanie metody clickHandler()
, która odtwarza dźwięk. Podwójne kliknięcie przycisku powoduje wywołanie metody doubleClickHandler()
, która dwukrotnie odtworzy dźwięk. Wartość drugiego argumentu metody play()
ma wartość 1
, co oznacza, że dźwięk powróci do początku odtwarzania i zostanie on odtworzony raz jeszcze. Pierwszy argument, czas rozpoczęcia odtwarzania, ma wartość 0
, co oznacza, że plik będzie odtwarzany od początku.
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.media.Sound; import flash.net.URLRequest; public class Sound_playExample2 extends Sprite { private var button:Sprite = new Sprite(); private var snd:Sound = new Sound(); public function Sound_playExample2() { var req:URLRequest = new URLRequest("click.mp3"); snd.load(req); button.graphics.beginFill(0x00FF00); button.graphics.drawRect(10, 10, 50, 30); button.graphics.endFill(); button.addEventListener(MouseEvent.CLICK, clickHandler); button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler); this.addChild(button); } private function clickHandler(event:MouseEvent):void { snd.play(); } private function doubleClickHandler(event:MouseEvent):void { snd.play(0, 2); } } }
W konstruktorze plik jest ładowany w bloku try...catch
w celu przechwycenia błędu, który może pojawić się w trakcie ładowania pliku. Do obiektu dźwięku dodawany jest detektor, który odpowie na zdarzenie IOErrorEvent
wywołując metodę errorHandler()
. Dla aplikacji głównej dodawany jest kolejny detektor, który odpowie na zdarzenie Event.ENTER_FRAME
, które używane jest jako mechanizm odmierzający czas służący do pokazania postępu odtwarzania. Na końcu dla kanału dźwiękowego dodawany jest trzeci detektor, który odpowie na zdarzenie Event.SOUND_COMPLETE
(w momencie zakończenia odtwarzania dźwięku), wywołując metodę soundCompleteHandler()
. Metoda soundCompleteHandler()
usuwa również detektor zdarzeń dla zdarzenia Event.ENTER_FRAME
.
W metodzie enterFrameHandler()
wartość właściwości bytesLoaded
, przekazana razem z obiektem ProgressEvent
, dzielona jest przez wartość właściwości bytesTotal
w celu uzyskania procentowej wartości ładowanych danych dźwiękowych. Procentowa wartość danych odtwarzanego dźwięku mogłaby być określana także przez podzielenie wartości właściwości position
kanału dźwiękowego przez wartość długości danych dźwiękowych. Jednak, jeśli dane dźwiękowe nie zostały w pełni załadowane, właściwość length
obiektu dźwięku wyświetla jedynie rozmiar aktualnie ładowanych danych dźwiękowych. Oszacowanie końcowego rozmiaru pliku dźwiękowego jest obliczane przez podzielenie wartości właściwości length
bieżącego obiektu dźwięku przez wartość właściwości bytesLoaded
podzielonej przez wartość właściwości bytesTotal
.
Należy zauważyć, że jeśli plik jest niewielki, został zbuforowany lub znajduje się w katalogu lokalnym, postęp ładowania może być niezauważalny (tzn. plik został szybko załadowany). Również opóźnienie pomiędzy rozpoczęciem ładowania danych dźwiękowych, a rozpoczęciem odtwarzania załadowanych danych zależy od wartości właściwości SoundLoaderContext.buffertime
, która domyślnie przyjmuje wartość 1000 milisekund i można ją zmienić.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; import flash.events.IOErrorEvent; public class Sound_playExample3 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel; private var statusTextField:TextField = new TextField(); public function Sound_playExample3(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); channel = snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); this.addChild(statusTextField); } private function enterFrameHandler(event:Event):void { var loadTime:Number = snd.bytesLoaded / snd.bytesTotal; var loadPercent:uint = Math.round(100 * loadTime); var estimatedLength:int = Math.ceil(snd.length / (loadTime)); var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength)); statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" + "Bytes being loaded: " + snd.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + loadPercent + "%.\n" + "Sound playback is " + playbackPercent + "% complete."; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } private function soundCompleteHandler(event:Event):void { statusTextField.text = "The sound has finished playing."; removeEventListener(Event.ENTER_FRAME, enterFrameHandler); } } }
complete | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.COMPLETE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane po pomyślnym wczytaniu danych.
StałaEvent.COMPLETE
definiuje wartość właściwości type
obiektu zdarzenia complete
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt sieciowy, którego ładowanie zostało ukończone. |
Powiązane elementy interfejsu API
id3 | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.ID3
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane przez obiekt Sound, gdy są dostępne dane ID3 dotyczące dźwięku MP3.
StałaEvent.ID3
definiuje wartość właściwości type
obiektu zdarzenia id3
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt Sound ładujący plik MP3, dla którego są obecnie dostępne dane ID3. Obiekt target nie zawsze jest obiektem na liście wyświetlania, która zarejestrowała detektor zdarzeń. Właściwość currentTarget umożliwia uzyskanie dostępu do obiektu na liście wyświetlania, który obecnie przetwarza zdarzenie. |
Powiązane elementy interfejsu API
ioError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływana, gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający wczytywanie danych.
Definiuje wartość właściwościtype
obiektu zdarzenia ioError
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
errorID | Numer referencyjny skojarzony z konkretnym błędem (tylko w środowisku AIR). |
target | Obiekt sieciowy, w którym wystąpił błąd wejścia/wyjścia. |
text | Tekst, który ma być wyświetlany w charakterze komunikatu o błędzie. |
Powiązane elementy interfejsu API
open | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.OPEN
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane po rozpoczęciu ładowania.
StałaEvent.OPEN
definiuje wartość właściwości type
obiektu zdarzenia open
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt sieciowy, który otworzył połączenie. |
Powiązane elementy interfejsu API
progress | Zdarzenie |
flash.events.ProgressEvent
właściwość ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wywoływane w trakcie stopniowego wczytywania danych.
Definiuje wartość właściwościtype
obiektu zdarzenia progress
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
bytesLoaded | Liczba elementów lub bajtów załadowanych w momencie, w którym detektor przetwarza zdarzenie. |
bytesTotal | Łączna liczba elementów lub bajtów, które zostaną ostatecznie załadowane w razie pomyślnego zakończenia operacji ładowania. |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt informujący o postępie. |
Powiązane elementy interfejsu API
sampleData | Zdarzenie |
flash.events.SampleDataEvent
właściwość SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5 |
Wywoływane, gdy środowisko wykonawcze zażąda nowych danych audio.
Definiuje wartość właściwościtype
obiektu zdarzenia SampleDataEvent
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
position | Punkt, z którego udostępniane są dane audio. |
Przykład ( Sposób korzystania z tego przykładu )
var mySound:Sound = new Sound(); function sineWaveGenerator(event:SampleDataEvent):void { for ( var c:int=0; c<8192; c++ ) { event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); } } mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
Powiązane elementy interfejsu API
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; public class SoundExample extends Sprite { private var url:String = "MySound.mp3"; private var song:SoundChannel; public function SoundExample() { var request:URLRequest = new URLRequest(url); var soundFactory:Sound = new Sound(); soundFactory.addEventListener(Event.COMPLETE, completeHandler); soundFactory.addEventListener(Event.ID3, id3Handler); soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); song = soundFactory.play(); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function id3Handler(event:Event):void { trace("id3Handler: " + event); } private function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } } }
Tue Jun 12 2018, 12:06 PM Z