Werken met ingesloten geluiden

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Het gebruik van ingesloten geluiden, in plaats van het laden van geluiden uit een extern bestand, is vooral nuttig bij kleine geluiden die worden gebruikt als indicatoren binnen de gebruikersinterface van uw toepassing, bijvoorbeeld geluiden die worden afgespeeld wanneer er op knoppen wordt geklikt.

Wanneer u een geluidsbestand in uw toepassing insluit, wordt het resulterende SWF-bestand vergroot met het geluidsbestand. Met andere woorden, het insluiten van grote geluidsbestanden in uw toepassing kan ertoe leiden dat uw SWF-bestand ongewenst groot wordt.

Afhankelijk van uw ontwikkelingsomgeving, verschilt de exacte methode waarop een geluidsbestand in het SWF-bestand van uw toepassing wordt ingesloten.

Een ingesloten geluidsbestand in Flash gebruiken

Met het Flash-ontwerpgereedschap kunt u geluiden in diverse geluidsindelingen importeren en deze opslaan als symbolen in de bibliotheek. U kunt de geluiden vervolgens aan frames in de tijdlijn of aan de frames van een knoptoestand toewijzen, de geluiden met gedragingen gebruiken of deze rechtstreeks in ActionScript-code gebruiken. In deze sectie wordt beschreven hoe u met behulp van het Flash-ontwerpgereedschap ingesloten geluiden in ActionScript-code kunt gebruiken. Zie 'Geluiden importeren' in Flash gebruiken voor informatie over andere manieren om ingesloten geluiden in Flash te gebruiken.

U kunt als volgt een geluidsbestand insluiten met behulp van het Flash-programma voor het schrijven van programmacode:

  1. Selecteer Bestand > Importeren > Importeren in bibliotheek, selecteer een geluidsbestand en importeer dit.

  2. Klik met de rechtermuisknop op de naam van het geïmporteerde bestand in het deelvenster Bibliotheek en selecteer Eigenschappen. Klik op het selectievakje Exporteren voor ActionScript.

  3. Voer in het veld Klasse een naam in voor gebruik bij verwijzing naar dit ingesloten geluid in ActionScript. Standaard wordt de naam van het geluidsbestand in dit veld gebruikt. Als de bestandsnaam een punt bevat, zoals in de naam "DrumSound.mp3", moet u de naam veranderen, bijvoorbeeld in "DrumSound"; ActionScript staat namelijk geen punt in de naam van een klasse toe. In het veld Basisklasse wordt nog steeds flash.media.Sound weergegeven.

  4. Klik op OK. Er wordt mogelijk een dialoogvenster weergegeven waarin wordt gemeld dat er geen definitie voor deze klasse in het klassenpad is gevonden. Klik op OK en ga verder. Als u een klassennaam hebt ingevoerd die niet overeenkomt met de naam van een van de klassen in het klassenpad van uw toepassing, wordt er automatisch een nieuwe klasse gegenereerd die de eigenschappen overerft van de klasse flash.media.Sound.

  5. Als u het ingesloten geluid wilt gebruiken, verwijst u naar de klassennaam voor dat geluid in ActionScript. De volgende code begint bijvoorbeeld met het maken van een nieuwe instantie van de automatisch gegenereerde klasse DrumSound:

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

    DrumSound is een subklasse van de klasse flash.media.Sound, wat betekent dat de methoden en eigenschappen van de klasse Sound worden overgeërfd, inclusief de methode play() , zoals hierboven is weergegeven.

Een ingesloten geluidsbestand in Flex gebruiken

Er zijn veel manieren waarop u geluidselementen in een Flex-toepassing kunt insluiten, zoals:

  • Met de metagegevenstag [Embed] in een script

  • Door met de aanwijzing @Embed in MXML een ingesloten geluidselement toe te wijzen als een eigenschap van een onderdeel zoals een Button of een SoundEffect.

  • Met de aanwijzing @Embed binnen een CSS-bestand

In deze sectie wordt de eerste optie beschreven: geluiden insluiten in ActionScript-code binnen een Flex-toepassing met behulp van de metagegevenstag [Embed] .

Als u een element wilt insluiten in ActionScript-code, gebruikt u de metagegevenstag [Embed] .

Plaats het geluidsbestand in de hoofdbronmap of in een andere map die zich bevindt in het bouwpad van het project. Wanneer de compiler van een metagegevenstag Embed aantreft, wordt het ingesloten klassenelement automatisch gemaakt. U krijgt toegang tot de klasse via een variabele van het gegevenstype Class die u direct na de metagegevenstag [Embed] moet declareren.

Met de volgende code wordt een geluid met de naam smallSound.mp3 ingesloten en wordt een variabele met de naam soundClass gebruikt om een verwijzing op te slaan naar het ingesloten klassenelement dat aan het geluid is gekoppeld. De code maakt vervolgens een instantie van het ingesloten klassenelement, cast deze als een instantie van de klasse Sound en roept de methode play() aan voor die instantie:

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

Als u het ingesloten geluid wilt gebruiken om een eigenschap van een Flex-component in te stellen, moet u het geluid casten als een instantie van de klasse mx.core.SoundAsset en niet als een instantie van de klasse Sound. Zie ''Ingesloten klassenelementen'' in ActionScript 3.0 leren gebruiken voor een vergelijkbaar voorbeeld waarin de SoundAsset-klasse wordt gebruikt.