Pakket | flash.media |
Klasse | public final class SoundMixer |
Overerving | SoundMixer Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
-gebeurtenis verzendt).
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
audioPlaybackMode : String [statisch]
Geeft de audioweergavemodus aan van alle Sound-objecten. | SoundMixer | ||
bufferTime : int [statisch]
Het aantal seconden dat nodig is voor het in een buffer voorladen van een ingesloten streaming geluid voordat het geluid begint met streamen. | SoundMixer | ||
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
soundTransform : flash.media:SoundTransform [statisch]
Het object SoundTransform waarmee algemene geluidseigenschappen worden beheerd. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [statisch]
Schakelt de speakerphone in en uit wanneer de spraakmodus van het apparaat is geactiveerd. | SoundMixer |
Methode | Gedefinieerd door | ||
---|---|---|---|
[statisch]
Bepaalt of geluiden niet toegankelijk zijn vanwege beveiligingsbeperkingen. | SoundMixer | ||
[statisch]
Maakt een momentopname van de huidige geluidsgolf en plaatst deze in het opgegeven object ByteArray. | SoundMixer | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
[statisch]
Stopt alle geluiden die momenteel worden afgespeeld. | SoundMixer | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object |
audioPlaybackMode | eigenschap |
audioPlaybackMode:String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 3 |
Geeft de audioweergavemodus aan van alle Sound-objecten. Op mobiele apparaten worden hiermee prioriteiten op het gebied van geluid en standaardinstellingen ingesteld aan de hand van de taal van de platformen. In desktop- en tv-omgevingen bestaat er geen functioneel verschil tussen de verschillende modi voor het afspelen van audio.
De geldige waarden voor deze eigenschap zijn gedefinieerd in de AudioPlaybackMode-klasse.
Opmerking: als op iOS één toepassing is ingesteld op audioPlaybackMode=AudioPlaybackMode.VOICE
, kunnen andere toepassingen deze niet wijzigen in AudioPlaybackMode.MEDIA
.
Maak minimaal gebruik van de modus AudioPlaybackMode.VOICE
en schakel zo snel mogelijk terug naar de modus AudioPlaybackMode.MEDIA
nadat de voice-aanroep is beëindigd. Op deze manier kunnen ook andere toepassingen worden afgespeeld in de media-modus.
Wanneer u de audioweergavemodus op iOS wijzigt, worden native apps die muziek afspelen, kort gepauzeerd.
De standaardwaarde is AudioPlaybackMode.MEDIA.
Implementatie
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Gegenereerde uitzondering
ArgumentError — kInvalidParameterError
|
Verwante API-elementen
bufferTime | eigenschap |
bufferTime:int
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Het aantal seconden dat nodig is voor het in een buffer voorladen van een ingesloten streaming geluid voordat het geluid begint met streamen. De gegevens in een geladen geluid, inclusief de buffertijd, zijn niet toegankelijk voor een SWF-bestand in een ander domein, tenzij u een bestand met interdomeinbeleid implementeert. Zie de beschrijving van de klasse Sound voor meer informatie over beveiliging en geluid. De gegevens in een geladen geluid, inclusief de buffertijd, zijn niet toegankelijk voor code in een bestand dat zich in een ander domein bevindt, tenzij u een bestand met interdomeinbeleid implementeert. In de toepassingssandbox in een AIR-toepassing heeft de code echter toegang tot de gegevens in geluidsbestanden uit om het even welke bron. Zie de beschrijving van de klasse Sound voor meer informatie over beveiliging en geluid.
De eigenschap SoundMixer.bufferTime
beïnvloedt alleen de buffertijd voor ingesloten streaming geluiden in een SWF-bestand en staat los van dynamisch gemaakte objecten Sound (dat wil zeggen, objecten Sound die zijn gemaakt in ActionScript). De waarde van SoundMixer.bufferTime
kan de buffertijd die is opgegeven in het object SoundLoaderContext dat is doorgegeven aan de methode Sound.load()
niet overschrijven of de standaardwaarde ervan instellen.
Implementatie
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Verwante API-elementen
soundTransform | eigenschap |
soundTransform:flash.media:SoundTransform
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Het object SoundTransform waarmee algemene geluidseigenschappen worden beheerd. Het object SoundTransform bevat eigenschappen waarmee het volume, panning en de toewijzing van de linker- en rechterluidspreker worden ingesteld. Het object SoundTransform dat in deze eigenschap wordt gebruikt, biedt de uiteindelijke geluidsinstellingen die worden toegepast op alle geluiden nadat eventuele afzonderlijke geluidsinstellingen zijn toegepast.
Implementatie
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Verwante API-elementen
useSpeakerphoneForVoice | eigenschap |
useSpeakerphoneForVoice:Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 3 |
Schakelt de speakerphone in en uit wanneer de spraakmodus van het apparaat is geactiveerd. Standaard gebruiken smartphones de oortelefoon voor audio-uitvoer wanneer SoundMixer.audioPlaybackMode
is ingesteld op AudioPlaybackMode.VOICE
. Met de eigenschap useSpeakerphoneForVoice
kunt u de standaarduitvoer overschrijven, zodat u een speakerphoneknop kunt implementeren in een telefoontoepassing. Deze eigenschap heeft alleen effect in de modus AudioPlaybackMode.VOICE
. In desktop- en tv-omgevingen heeft deze eigenschap geen effect.
Opmerking: als op iOS uw toepassing is ingesteld op audioPlaybackMode=VOICE
en een andere toepassing ook wordt afgespeeld in de voice-modus, kunt u useSpeakerphoneForVoice=true
niet instellen.
Opmerking: op Android dient u android.permission.MODIFY_AUDIO_SETTINGS
in te stellen in het descriptorbestand van de AIR-toepassing, anders heeft het wijzigen van deze waarde geen effect. Dit is bovendien een globale instelling voor het apparaat. Andere toepassingen die op het apparaat worden uitgevoerd, kunnen de onderliggende apparaatinstelling op elk gewenst moment wijzigen.
De standaardwaarde is false.
Implementatie
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Verwante API-elementen
areSoundsInaccessible | () | methode |
public static function areSoundsInaccessible():Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9 |
Bepaalt of geluiden niet toegankelijk zijn vanwege beveiligingsbeperkingen. Een geluid dat wordt geladen van een ander domein dan dat van de inhoud die deze methode aanroept, is bijvoorbeeld niet toegankelijk wanneer de server met het geluid geen URL-beleidsbestand bevat dat toegang verleent aan het domein van dat domein. Het geluid kan wel worden geladen en afgespeeld, maar bewerkingen op laag niveau, zoals ID3-metagegevens voor het geluid opvragen, kunnen niet worden uitgevoerd voor niet-toegankelijke geluiden.
Voor AIR-toepassingsinhoud in de beveiligingssandbox van de toepassing retourneert deze methode altijd false
. Alle geluiden, inclusief de geluiden die uit andere domeinen werden geladen, zijn toegankelijk voor inhoud in de beveiligingssandbox van de toepassing.
Boolean — De tekenreeksrepresentatie van de booleaanse waarde.
|
Verwante API-elementen
computeSpectrum | () | methode |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9 |
Maakt een momentopname van de huidige geluidsgolf en plaatst deze in het opgegeven object ByteArray. De waarden worden opgemaakt als genormaliseerde waarden met drijvende komma in het bereik -1,0 tot en met 1,0. Het object ByteArray dat aan de parameter outputArray
is doorgegeven, wordt door de nieuwe waarden overschreven. De grootte van het gemaakte object ByteArray is vastgesteld op 512 waarden met drijvende komma, waarbij de eerste 256 waarden het linkerkanaal vertegenwoordigen en de tweede 256 waarden het rechterkanaal.
Opmerking: deze methode is onderworpen aan lokale beperkingen voor bestandsbeveiliging en aan beperkingen voor laden tussen domeinen. Wanneer u werkt met lokale bestanden of geluiden die worden geladen van een server in een ander domein dan de aanroepende inhoud, moet u sandboxbeperkingen mogelijk afhandelen via een bestand voor interdomeinbeleid. Zie de beschrijving van de klasse Sound voor meer informatie. Daarnaast kan deze methode niet worden gebruikt om gegevens te extraheren uit RTMP-streams, zelfs wanneer de methode wordt aangeroepen door inhoud in hetzelfde domein als de RTMP-server.
Deze methode wordt ondersteund via RTMP in Flash Player 9.0.115.0 en hoger en in Adobe AIR. U kunt toegang tot streams op Flash Media Server beheren in een serverscript. Raadpleeg de eigenschappen Client.audioSampleAccess
en Client.videoSampleAccess
in de Server-Side ActionScript Language Reference for Adobe Flash Media Server voor meer informatie.
Parameters
outputArray:ByteArray — Een object ByteArray dat de waarden bevat die aan het geluid zijn gekoppeld. Wanneer geen geluiden beschikbaar zijn vanwege beveiligingsbeperkingen (areSoundsInaccessible == true ), blijft het object outputArray ongewijzigd. Wanneer alle geluiden zijn gestopt, wordt het object outputArray gevuld met nullen.
| |
FFTMode:Boolean (default = false ) — Een Booleaanse waarde die aangeeft of eerst een Fourier-transformatie wordt toegepast op de geluidsgegevens. Wanneer u deze parameter op true instelt, retourneert de methode een frequentiespectrum in plaats van de onbewerkte geluidsgolf. In het frequentiespectrum worden lage frequenties links weergegeven en hoge frequenties rechts.
| |
stretchFactor:int (default = 0 ) — De resolutie van de geluidssamples. Wanneer u de waarde stretchFactor instelt op 0, worden gegevens gesampled op 44,1 KHz, bij de waarde 1 worden gegevens gesampled op 22,05 KH, bij de waarde 2 op 11,025 KHz, enzovoort.
|
Verwante API-elementen
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
computeSpectrum()
gebruikt om een grafische weergave van de geluidsgolfgegevens te maken.
In de constructor wordt een geluidsbestand geladen en ingesteld op afspelen. (Dit voorbeeld bevat geen foutafhandeling en het wordt aangenomen dat het geluidsbestand zich in dezelfde map bevindt als het SWF-bestand.) In het voorbeeld wordt geluisterd naar de gebeurtenis Event.ENTER_FRAME
terwijl het geluid wordt afgespeeld, waarbij regelmatig de methode onEnterFrame()
wordt geactiveerd om een grafiek van de geluidsgegevens te tekenen. Wanneer het geluid klaar is met afspelen, stopt de methode onPlaybackComplete()
het tekenprocess door de listener voor de gebeurtenis Event.ENTER_FRAME
te verwijderen.
Bij de methode onEnterFrame()
slaat de methode computeSpectrum()
het onbewerkte geluid op in het bytearray-object bytes
. De gegevens worden bemonsterd met een frequentie van 44,1 kHz. De bytearray bevat 512 bytes aan gegevens, elk met een drijvende-kommawaarde tussen -1 en 1. De eerste 256 waarden vertegenwoordigen het linkerkanaal en de volgende 256 waarden het rechterkanaal. De eerst lus for doorloopt de eerste 256 gegevenswaarden, (het linkerstereokanaal) en tekent een lijn van elk punt naar het daarop volgende punt door gebruik te maken van de methode Graphics.lineTo()
. (De vectorafbeelding van de geluidsgolf wordt rechtstreeks op het object sprite van de klasse geschreven.) De geluidsbytes worden gelezen als een 32-bits drijvende-kommagetal van de bytestream en worden vermenigvuldigd door de plothoogte om het verticale bereik van de grafiek te bepalen. De breedte wordt tweemaal zo breed als de lengte van het kanaal ingesteld. De tweede lus for leest de volgende reeks van 256 waarden (het rechterstereokanaal) en brengt de lijnen in omgekeerde volgorde in kaart. De methoden g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
en g.lineTo(0, PLOT_HEIGHT);
tekenen de basislijn voor de golven. De resulterende golfplot leveren een spiegelbeeldeffect op.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; import flash.text.TextField; public class SoundMixer_computeSpectrumExample extends Sprite { public function SoundMixer_computeSpectrumExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("Song1.mp3"); snd.load(req); var channel:SoundChannel; channel = snd.play(); addEventListener(Event.ENTER_FRAME, onEnterFrame); channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); } private function onEnterFrame(event:Event):void { var bytes:ByteArray = new ByteArray(); const PLOT_HEIGHT:int = 200; const CHANNEL_LENGTH:int = 256; SoundMixer.computeSpectrum(bytes, false, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x6600CC); g.beginFill(0x6600CC); g.moveTo(0, PLOT_HEIGHT); var n:Number = 0; for (var i:int = 0; i < CHANNEL_LENGTH; i++) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); g.endFill(); g.lineStyle(0, 0xCC0066); g.beginFill(0xCC0066, 0.5); g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); for (i = CHANNEL_LENGTH; i > 0; i--) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(0, PLOT_HEIGHT); g.endFill(); } private function onPlaybackComplete(event:Event):void { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } } }
stopAll | () | methode |
public static function stopAll():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Stopt alle geluiden die momenteel worden afgespeeld.
>In Flash Professional stopt deze methode de afspeelkop niet. Het afspelen van geluiden die voor streaming zijn ingesteld, wordt hervat terwijl de afspeelkop wordt bewogen over de frames waarin de geluiden zich bevinden.
Houd rekening met het volgende beveiligingsmodel wanneer u deze eigenschap gebruikt:
- Door het aanroepen van de methode
soundMixer.stopAll()
worden standaard alleen geluiden gestopt in dezelfde beveiligingssandbox als het object dat de methode aanroept. Geluiden waarvan het afspelen niet is gestart vanuit dezelfde sandbox als het aanroepende object, worden niet gestopt. - Wanneer u het geluid laadt met de methode
load()
van de klasse Sound, kunt u een parametercontext
opgeven (een object SoundLoaderContext). Flash Player of Adobe AIR controleert of er een bestand met interdomeinbeleid aanwezig is op de server waarvan het geluid wordt geladen als u de eigenschapcheckPolicyFile
van het object SoundLoaderContext instelt optrue
. Wanneer de server een bestand met interdomeinbeleid bevat en het bestand het domein van de aanroepende inhoud toestaat, kan het bestand het geladen geluid stoppen met de methodeSoundMixer.stopAll()
; anders is dit niet mogelijk.
In Adobe AIR is de inhoud in de application
-beveiligingssandbox (inhoud die met de AIR-toepassing is geïnstalleerd), echter niet beperkt tot deze beveiligingsbeperkingen.
Lees voor meer informatie over beveiliging het onderwerp Security in het Flash Player Developer Center.
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
stopAll()
gebruikt om twee geluiden te dempen die tegelijkertijd worden afgespeeld.
In de constructor worden twee verschillende geluidsbestanden geladen en ingesteld op afspelen. Het eerste geluid wordt lokaal geladen en wordt toegewezen aan een geluidskanaal. (Aangenomen wordt dat het bestand zich in dezelfde map bevindt als het SWF-bestand.) Het tweede bestand wordt geladen en gestreamd vanaf de Adobe-site. U kunt de methode SoundMixer.stopAll()
alleen gebruiken wanneer alle geluiden toegankelijk zijn. (Een object SoundLoaderContext kan worden gebruikt om het bestand met interdomeinbeleid te controleren.) Elk geluid heeft ook een gebeurtenislistener die wordt aangeroepen wanneer tijdens het laden van het geluidsbestand een I/O-fout is opgetreden. Er wordt ook een tekstveld muteButton
gemaakt. Het programma luistert naar een klikgebeurtenis die de methode muteButtonClickHandler()
aanroept.
Bij de methode muteButtonClickHandler()
controleert de methode areSoundsInaccessible()
of de geluidsmixer toegang heeft tot de bestanden wanneer de inhoud van het tekstveld MUTE is. Wanneer de bestanden toegankelijk zijn, stopt de methode stopAll()
de geluiden. Door nogmaals het tekstveld te selecteren kunt u het eerste geluid afspelen, waarna de inhoud van het tekstveld weer in MUTE wordt gewijzigd. Deze keer dempt de methode stopAll()
het ene geluid dat wordt afgespeeld. Het geluidskanaal met de methode stop()
kan ook worden gebruikt om een specifiek geluid te stoppen dat aan het kanaal is toegewezen. (Om het kanaal functioneel te gebruiken, moet het geluid elke keer dat de methode play()
wordt aangeroepen, opnieuw aan het kanaal worden toegewezen.)
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.events.IOErrorEvent; public class SoundMixer_stopAllExample extends Sprite { private var firstSound:Sound = new Sound(); private var secondSound:Sound = new Sound(); private var muteButton:TextField = new TextField(); private var channel1:SoundChannel = new SoundChannel(); public function SoundMixer_stopAllExample() { firstSound.load(new URLRequest("mySound.mp3")); secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3")); firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler); secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler); channel1 = firstSound.play(); secondSound.play(); muteButton.autoSize = TextFieldAutoSize.LEFT; muteButton.border = true; muteButton.background = true; muteButton.text = "MUTE"; muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler); this.addChild(muteButton); } private function muteButtonClickHandler(event:MouseEvent):void { if(muteButton.text == "MUTE") { if(SoundMixer.areSoundsInaccessible() == false) { SoundMixer.stopAll(); muteButton.text = "click to play only one of sound."; } else { muteButton.text = "The sounds are not accessible."; } } else { firstSound.play(); muteButton.text = "MUTE"; } } private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
Wed Jun 13 2018, 11:42 AM Z