Praca z osadzonymi dźwiękami

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Korzystanie z osadzonych dźwięków zamiast ładowania dźwięku z pliku zewnętrznego jest najbardziej użyteczne w przypadku niewielkich dźwięków używanych jako wskaźniki w interfejsie użytkownika aplikacji, takich jak dźwięki odtwarzane po kliknięciu przycisku.

Osadzenie pliku dźwiękowego w aplikacji powoduje, że rozmiar wynikowego pliku SWF zwiększa się o rozmiar pliku dźwiękowego. Innymi słowy, osadzenie dużych plików dźwiękowych w aplikacji może zwiększyć rozmiar pliku SWF do niepożądanych rozmiarów.

Dokładna metodyka osadzania pliku dźwiękowego w pliku SWF aplikacji różni się w zależności od posiadanego środowiska programistycznego.

Korzystanie z pliku z osadzonym dźwiękiem w programie Flash

Narzędzie do tworzenia treści Flash umożliwia importowanie dźwięków w wielu formatach dźwiękowych i zapisywanie ich w postaci symboli w Bibliotece. Następnie można przypisywać je do klatek na linii czasu lub do klatek stanu przyciski za pomocą Behaviors, albo używać ich bezpośrednio w kodzie ActionScript. W tej sekcji opisano sposób korzystania z osadzonych dźwięków w kodzie ActionScript za pomocą narzędzia do tworzenia treści Flash. Więcej informacji na temat innych sposobów korzystania z osadzonych dźwięków w programie Flash zawiera sekcja „Importowanie dźwięków” w podręczniku Korzystanie z programu Flash .

W celu osadzenia pliku dźwiękowego za pomocą narzędzia do tworzenia treści Flash:

  1. Wybierz opcje Plik > Importuj > Importuj do biblioteki, a następnie wybierz plik dźwiękowy i zaimportuj go.

  2. Kliknij prawym przyciskiem myszy nazwę importowanego pliku w panelu biblioteka, a następnie wybierz Właściwości. Kliknij pole wyboru Eksportuj do ActionScript.

  3. W polu Klasa wprowadź nazwę, jaka ma być używana podczas odnoszenia się do tego osadzonego dźwięku w języku ActionScript. Domyślnie będzie ona w tym polu używała nazwy pliku dźwiękowego. Jeśli nazwa pliku obejmuje kropkę, jak w nazwie „DrumSound.mp3”, konieczna jest zmiana go na inne, np. „DrumSound”; ActionScript nie zezwala bowiem na kropki w nazwach klas. Pole Klasa bazowa powinno nadal wskazywać wartość: flash.media.Sound.

  4. Kliknij przycisk OK. Możliwe jest wyświetlenie okna dialogowego informującego o tym, że definicji dla tej klasy nie można znaleźć w ścieżce klasy. Kliknij przycisk OK i kontynuuj. W przypadku wprowadzenia nazwy klasy, która nie odpowiada nazwie żadnej z klas w ścieżce aplikacji, generowana jest automatycznie nowa klasa, która dziedziczy z klasy flash.media.Sound.

  5. W celu użycia osadzonego dźwięku należy odwołać się do nazwy klasy dla tego dźwięku w języku ActionStript. Na przykład poniższy kod rozpoczyna się od utworzenia nowej instancji automatycznie generowanej klasy DrumSound:

    var drum:DrumSound = new DrumSound(); 
    var channel:SoundChannel = drum.play();

    Klasa DrumSound jest podklasą klasy flash.media.Sound, dziedziczy zatem metody i właściwości klasy Sound, w tym metodę play() , zgodnie z opisem powyżej.

Korzystanie z pliku z osadzonym dźwiękiem w programie Flex

Istnieje wiele dróg osadzenia zasobów dźwiękowych w aplikacji Flex, w tym:

  • Użycie znacznika metadanych [Embed] w skrypcie.

  • Użycie dyrektywy @Embed w kodzie MXML w celu przypisania osadzonego zasobu jako właściwości składnika takiego jak Button czy SoundEffect.

  • Użycie dyrektywy @Embed w pliku CSS

W tej sekcji opisano pierwszą z opcji: sposób osadzania dźwięków w kodzie ActionScript w ramach aplikacji Flex za pomocą znaczników metadanych [Embed] .

W celu osadzenia zasobu w kodzie ActionScript należy skorzystać ze znacznika metadanych [Embed] .

Umieść w głównym folderze źródłowym lub innym folderze znajdującym się w ścieżce budowania bieżącego projektu. Gdy tylko kompilator napotyka znacznik Embed, tworzy klasę zasobu osadzonego. Dostęp do tej klasy można uzyskać za pośrednictwem zmiennej typu danych Class, która została zadeklarowana niezwłocznie za znacznikiem metadanych [Embed] .

Poniższy kod powoduje osadzenie dźwięku o nazwie smallSound.mp3 i używa zmiennej o nazwie soundClass do zapisania odwołania do klasy osadzonego zasobu skojarzonej z tym dźwiękiem. Następnie kod tworzy instancję klasy osadzonego zasobu, nadaje jej rolę instancji klasy Sound, oraz wywołuje metodę play() dla tej instancji:

package 
{ 
    import flash.display.Sprite; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
 
    public class EmbeddedSoundExample extends Sprite 
    { 
        [Embed(source="smallSound.mp3")] 
        public var soundClass:Class; 
         
        public function EmbeddedSoundExample() 
        { 
            var smallSound:Sound = new soundClass() as Sound; 
            smallSound.play(); 
        } 
    } 
}

W celu korzystania z osadzonego dźwięku do ustawiania właściwości komponentu Flex powinien on być instancją klasy mx.core.SoundAsset, nie zaś instancją klasy Sound. Podobny przykład wykorzystania klasy SoundAsset zawarto w sekcji „Klasy zasobów osadzonych” w podręczniku Poznajemy język ActionScript 3.0.