Verwenden eingebetteter Sounds

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Eingebettete Sounds als Alternative zum Laden eines Sounds aus einer externen Datei eignen sich insbesondere für kleine Sounddateien, die als Indikatoren innerhalb der Benutzeroberfläche einer Anwendung verwendet werden, z. B. als Sounds, die beim Klicken auf Schaltflächen wiedergegeben werden.

Wenn Sie eine Sounddatei in Ihre Anwendung einbetten, wird die resultierende SWF-Datei um die Größe der Sounddatei erweitert. Anders ausgedrückt, durch das Einbetten von großen Sounddateien in Ihre Anwendung könnte Ihre SWF-Datei in nicht wünschenswerter Weise anwachsen.

Die genaue Methode des Einbettens einer Sounddatei in die SWF-Datei Ihrer Anwendung hängt von Ihrer Entwicklungsumgebung ab.

Verwenden eingebetteter Sounddateien in Flash

Mit dem Flash-Authoring-Tool können Sie in einer Reihe von Soundformaten vorliegende Sounds importieren und als Symbole in der Bibliothek speichern. Sie können diese dann Bildern in der Zeitleiste oder Bildern eines Schaltflächenstatus zuordnen, sie zusammen mit Verhalten einsetzen oder direkt in ActionScript-Code verwenden. In diesem Abschnitt wird beschrieben, wie Sie eingebettete Sounds in ActionScript-Code mit dem Flash-Authoring-Tool verwenden können. Informationen über weitere Möglichkeiten zum Verwenden eingebetteter Sounds in Flash finden Sie unter „Sounds importieren“ im Handbuch Verwenden von Flash .

So betten Sie eine Sounddatei mit dem Flash-Authoring-Tool ein:

  1. Klicken Sie auf „Datei“ > „Importieren“ > „In Bibliothek importieren“, und wählen Sie eine Sounddatei aus, um diese zu importieren.

  2. Klicken Sie im Bedienfeld „Bibliothek“ mit der rechten Maustaste auf den Namen der importierten Datei und wählen Sie „Eigenschaften“ aus. Klicken Sie auf das Kontrollkästchen „Export für ActionScript“.

  3. Geben Sie im Feld „Klasse“ einen Namen ein, der in ActionScript für Verweise auf diesen eingebetteten Sound verwendet werden soll. Standardmäßig wird in diesem Feld der Name der Sounddatei eingetragen. Wenn der Dateiname einen Punkt enthält (wie beispielsweise im Namen „DrumSound.mp3“), müssen Sie ihn entsprechend ändern (z. B. in „DrumSound“). In ActionScript sind Punkte in Klassennamen nicht zulässig. Im Feld „Basisklasse“ sollte weiterhin „flash.media.Sound“ angezeigt werden.

  4. Klicken Sie auf „OK“. Möglicherweise wird ein Dialogfeld mit der Meldung angezeigt, dass im Klassenpfad keine Definition für diese Klasse gefunden wurde. Klicken Sie auf „OK“ und setzen Sie den Vorgang fort. Wenn Sie einen Klassennamen eingegeben haben, der mit keinem der Klassennamen im Klassenpfad der Anwendung übereinstimmt, wird automatisch eine neue Klasse generiert, die von der flash.media.Sound-Klasse erbt.

  5. Um den eingebetteten Sound zu verwenden, nehmen Sie in ActionScript über den Klassennamen des Sounds darauf Bezug. Beispielsweise wird am Anfang des folgenden Codes eine neue Instanz der automatisch generierten DrumSound-Klasse erstellt:

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

    Die DrumSound-Klasse ist eine Unterklasse der flash.media.Sound-Klasse und erbt deshalb die Methoden und Eigenschaften der Sound-Klasse, einschließlich der play() -Methode, wie oben dargestellt.

Verwenden eingebetteter Sounddateien in Flex

Soundbestände können auf vielfältige Weise in eine Flex-Anwendung eingebettet werden, beispielsweise durch:

  • Verwenden des Metadaten-Tags [Embed] in einem Skript

  • Verwenden der @Embed -Direktive in MXML, um einen eingebetteten Bestand einer Komponente wie einem Button oder SoundEffect als Eigenschaft zuzuweisen

  • Verwenden der @Embed -Direktive in einer CSS-Datei

In diesem Abschnitt wird das erste Verfahren beschrieben: das Einbetten von Sound in ActionScript-Code in einer Flex-Anwendung mittels des Metadaten-Tags [Embed] .

Verwenden Sie zum Einbetten eines Bestands in ActionScript-Code das Metadaten-Tag [Embed] .

Platzieren Sie die Sounddatei im Hauptquellordner oder einem anderen Ordner, der sich im Erstellungspfad Ihres Projekts befindet. Wenn der Compiler auf ein Embed-Metadaten-Tag trifft, erstellt er die eingebettete Bestandsklasse. Sie können auf die Klasse über eine Variable des Class-Datentyps zugreifen, die Sie unmittelbar nach dem [Embed] -Metadaten-Tag deklarieren.

Der folgende Beispielcode bettet einen Sound namens „smallSound.mp3“ ein und verwendet eine Variable namens soundClass zum Speichern eines Verweises auf die eingebettete Bestandsklasse, die diesem Sound zugewiesen ist. Anschließend erstellt der Code eine Instanz der eingebetteten Bestandsklasse, wandelt sie in eine Instanz der Sound-Klasse um und ruft die play() -Methode für diese Instanz auf:

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(); 
        } 
    } 
}

Wenn Sie mithilfe des eingebetteten Sounds eine Eigenschaft einer Flex-Komponente festlegen möchten, sollten Sie den Sound in eine Instanz der mx.core.SoundAsset-Klasse anstatt in eine Instanz der Sound-Klasse umwandeln. Einen ähnlichen Beispielcode, der die SoundAsset-Klasse verwendet, finden Sie unter „Eingebettete Bestandsklassen“ im „ActionScript 3.0 – Arbeitshandbuch“.