Paket | flash.media |
Klass | public final class SoundMixer |
Arv | SoundMixer Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
-händelse).
Egenskap | Definieras med | ||
---|---|---|---|
audioPlaybackMode : String [statisk]
Anger ljuduppspelningsläge för alla Sound-objekt. | SoundMixer | ||
bufferTime : int [statisk]
Hur många sekunder ett inbäddat direktuppspelat ljud ska förhandsinläsas till en buffert innan direktuppspelningen startar. | SoundMixer | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
soundTransform : flash.media:SoundTransform [statisk]
Det SoundTransform-objekt som styr globala ljudegenskaper. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [statisk]
Växlar högtalartelefonen när enheten är försatt i röstläge. | SoundMixer |
Metod | Definieras med | ||
---|---|---|---|
[statisk]
Avgör om det finns ljud som inte är tillgängliga på grund av säkerhetsbegränsningar. | SoundMixer | ||
[statisk]
Tar en ögonblicksbild av den aktuella ljudvågen och placerar den i det angivna ByteArray-objektet. | SoundMixer | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
[statisk]
Slutar spela upp alla ljud. | SoundMixer | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object |
audioPlaybackMode | egenskap |
audioPlaybackMode:String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 3 |
Anger ljuduppspelningsläge för alla Sound-objekt. På mobila enheter med dessa egenskaper ställs ljudegenskaparna och standarder in enligt plattformsidiomen. I datorer och TV-miljöer finns det inga funktionella skillnader mellan ljuduppspelningslägena.
Giltiga värden för den här egenskapen definieras i klassen AudioPlaybackMode.
Obs! Om ett program ställer in audioPlaybackMode=AudioPlaybackMode.VOICE
i iOS kan andra program inte ändra det till AudioPlaybackMode.MEDIA
.
Använd läget AudioPlaybackMode.VOICE
så lite som möjligt och försök att växla till AudioPlaybackMode.MEDIA
så fort du kan efter ett röstsamtal, så att andra program kan använda medieläget.
När du ändrar läge för ljuduppspelning i iOS kommer ursprungliga appar som spelar musik att pausas tillfälligt.
Standardvärdet är AudioPlaybackMode.MEDIA.
Implementering
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Utlöser
ArgumentError — kInvalidParameterError
|
Relaterade API-element
bufferTime | egenskap |
bufferTime:int
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Hur många sekunder ett inbäddat direktuppspelat ljud ska förhandsinläsas till en buffert innan direktuppspelningen startar. Det går inte att få åtkomst till data i ett inläst ljud, inklusive bufferttiden, med en SWF-fil i en annan domän om du inte implementerar en korsdomänprincipfil. Mer information om säkerhet och ljud finns i beskrivningen av klassen Sound. Kod i en fil som finns i en annan domän kan inte komma åt data i ett inläst ljud, inklusive bufferttiden, om du inte implementerar en korsdomänprincipfil. I säkerhetssandlådan i ett AIR-program kan kod däremot få åtkomst till data i ljudfiler från alla källor. Mer information om säkerhet och ljud finns i beskrivningen av Sound-klassen.
Egenskapen SoundMixer.bufferTime
påverkar bufferttiden för inbäddade direktuppspelade ljud i en SWF-fil och är beroende av dynamiskt skapade Sound-objekt (Sound-objekt som skapats i ActionScript). Värdet för SoundMixer.bufferTime
kan inte överskrida eller ställa in standardvärdet för bufferttiden som anges i SoundLoaderContext-objektet som skickas till Sound.load()
-metoden.
Implementering
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Relaterade API-element
soundTransform | egenskap |
soundTransform:flash.media:SoundTransform
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Det SoundTransform-objekt som styr globala ljudegenskaper. Ett SoundTransform-objekt innehåller egenskaper för inställning av volym, panorering och vänstra och högra högtalaren. Objektet SoundTransform som används i den här egenskapen tillhandahåller slutliga ljudinställningar som används på alla ljud efter att eventuella enskilda ljudinställningar tillämpas.
Implementering
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Relaterade API-element
useSpeakerphoneForVoice | egenskap |
useSpeakerphoneForVoice:Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 3 |
Växlar högtalartelefonen när enheten är försatt i röstläge. I vanliga smarta telefoner kommer hörluren att användas för ljudutdata när inställningen för SoundMixer.audioPlaybackMode
är AudioPlaybackMode.VOICE
. Egenskapen useSpeakerphoneForVoice
används för att åsidosätta standardutdata så att du kan implementera en högtalartelefonsknapp i ett telefonprogram. Den här egenskapen har ingen effekt i andra lägen än AudioPlaybackMode.VOICE
. I stationära datorer och TV-miljöer har egenskapen ingen effekt.
Obs! Om ditt program har ställt in audioPlaybackMode=VOICE
i iOS och ett annat program också spelar upp i röstläge kan du inte ställa in useSpeakerphoneForVoice=true
.
Obs! På Android måste du ange android.permission.MODIFY_AUDIO_SETTINGS
i AIR-programbeskrivningsfilen, annars har en ändring av det här värdet ingen effekt. Dessutom är den här inställningen en global enhetsinställning. Andra program som körs på enheten kan ändra den underliggande enhetsinställningen när som helst.
Standardvärdet är false.
Implementering
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Relaterade API-element
areSoundsInaccessible | () | metod |
public static function areSoundsInaccessible():Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Avgör om det finns ljud som inte är tillgängliga på grund av säkerhetsbegränsningar. Exempelvis går det inte att komma åt ett ljud som har lästs in från en annan domän än domänen för innehållet som anropar metoden, om inte servern för ljudet har en URL-principfil som beviljar åtkomst till domänen för innehållet. Ljudet kan fortfarande läsas in och spelas upp, men åtgärder på låg nivå, som t.ex. inhämtning av ID3-metadata för ljudet, kan inte utföras på otillgängliga ljud.
Om AIR-programinnehåll i programmets säkerhetssandlåda anropar den här metoden returneras alltid false
. Alla ljud, inklusive de som har lästs in från andra domäner, kan kommas åt av innehåll i programmets säkerhetssandlåda.
Boolean — Strängrepresentationen av det booleska värdet.
|
Relaterade API-element
computeSpectrum | () | metod |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9 |
Tar en ögonblicksbild av den aktuella ljudvågen och placerar den i det angivna ByteArray-objektet. Värdena formateras som normaliserade flyttalsvärden inom intervallet -1,0 till 1,0. ByteArray-objektet som skickades till outputArray
-parametern skrivs över med de nya värdena. Storleken på ByteArray-objektet som skapats är fast på 512 flyttalsvärden, där de första 256 värdena representerar den vänstra kanalen, och de andra 256 värdena representerar den högra kanalen.
Obs! Den här metoden är föremål för lokala filsäkerhetsbegränsningar och begränsningar för korsdomäninläsning. Om du arbetar med lokala filer eller ljud som har lästs in från en server i en annan domän än det anropande innehållet, måste du kanske hantera sandlådebegränsningar med hjälp av en korsdomänprincipfil. Mer information finns i beskrivningen av Sound-klassen. Den här metoden kan dessutom inte användas för att extrahera data från RTMP-flöden, även om den anropas av innehåll som finns i samma domän som RTMP-servern.
Metoden stöds över RTMP i Flash Player 9.0.115.0 och senare i Adobe AIR. Du kan styra åtkomst till flöden på Flash Media Server i ett skript på servern. Mer information finns under egenskaperna Client.audioSampleAccess
och Client.videoSampleAccess
i Språkreferens för Serverside ActionScript för Adobe Flash Media Server.
Parametrar
outputArray:ByteArray — Ett ByteArray-objekt som behåller värdena som associeras med ljudet. Om vissa ljud inte är tillgängliga på grund av säkerhetsbegränsningar (areSoundsInaccessible == true ) ändras inte outputArray -objektet. Om alla ljud stoppas, fylls outputArray -objektet med nollor.
| |
FFTMode:Boolean (default = false ) — Ett booleskt värde som anger om en Fourier-omformning först utförs på ljuddata. Om du ställer in den här parametern på true returnerar metoden ett frekvensspektrum istället för raw-ljudvågen. I frekvensspektrat representeras låga frekvenser till vänster och höga frekvenser till höger.
| |
stretchFactor:int (default = 0 ) — Upplösningen för ljudexempel. Om du ställer in värdet stretchFactor på 0, samplas data på 44,1 KHz, med ett värde på 1, samplas data på 22,05 KHz, med ett värde på 2, samplas data på 11,025 KHz och så vidare.
|
Relaterade API-element
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Exempel ( Så här använder du exemplet )
computeSpectrum()
för att skapa en grafisk representation av ljudvågens data.
I konstruktorn läses en ljudfil in och ställs in på uppspelning. (Det finns ingen felhantering i exemplet och det antas att ljudfilen finns i samma katalog som SWF-filen.) Exemplet lyssnar efter händelsen Event.ENTER_FRAME
medan ljudet spelas upp. Metoden onEnterFrame()
aktiveras upprepade gånger för att rita en graf efter ljuddatavärden. När ljudet har spelats färdigt stoppar metoden onPlaybackComplete()
ritprocessen genom att ta bort avlyssnaren för händelsen Event.ENTER_FRAME
.
I metoden onEnterFrame()
lagrar metoden computeSpectrum()
ljudrådata i bytearrayobjektet bytes
. Data samplas med 44,1 kHz. Bytearrayen innehåller 512 byte data. Varje byte innehåller ett flyttal mellan -1 och 1. De första 256 värdena representerar den vänstra kanalen och de andra 256 värdena representerar den högra kanalen. Den första for-slingan läser de första 256 datavärdena (vänster stereokanal) och ritar en linje från varje punkt till nästa med metoden Graphics.lineTo()
. (Vektorgrafiken för ljudvågen skrivs direkt i klassens Sprite-objekt.) Ljudbyte läses som 32-bitars flyttal från byteflödet och multipliceras med plottningshöjden för att anpassas till diagrammets vertikala område. Bredden ställs in på två gånger kanallängdens bredd. Den andra for-slingan läser de nästa 256 värdena (höger stereokanal) och ritar linjerna i omvänd ordning. Metoderna g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
och g.lineTo(0, PLOT_HEIGHT);
ritar vågornas baslinje. Den vågform som ritas ger en spegelbildseffekt.
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 | () | metod |
public static function stopAll():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Slutar spela upp alla ljud.
>I Flash Professional stoppar den här metoden inte spelhuvudet. Ljud som är inställda på att direktuppspelas börjar spelas upp igen när spelhuvudet rör sig över bildrutorna de finns i.
Överväg följande säkerhetsmodell när du använder den här egenskapen:
- Om metoden
SoundMixer.stopAll()
anropas stoppas som standard bara ljud i samma säkerhetssandlåda som objektet som anropar metoden. Alla ljud vars uppspelning inte startades från samma sandlåda som det anropande objektet stoppas inte. - Om du läser in ljudet med metoden
load()
i Sound-klassen kan du ange encontext
-parameter som är ett SoundLoaderContext-objekt. Om du anger egenskapencheckPolicyFile
för SoundLoaderContext-objektet tilltrue
söker Flash Player eller Adobe AIR efter en korsdomänprincipfil på den server som ljudet läses in från. Om det finns en korsdomänprincipfil och filen godkänner domänen för det anropande innehållet kan filen stoppa det inlästa ljudet med metodenSoundMixer.stopAll()
, annars kan den inte göra det.
I Adobe AIR begränsas emellertid inte innehåll i säkerhetssandlådan application
(innehåll som installeras med AIR-programmet) av de här säkerhetsbegränsningarna.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Exempel ( Så här använder du exemplet )
stopAll()
för att stänga av två ljud som spelas upp samtidigt.
I konstruktorn läses två olika ljudfiler in och ställs in på uppspelning. Det första ljudet läses in lokalt och tilldelas till en ljudkanal. (Här antas filen finnas i samma katalog som SWF-filen.) Den andra filen läses in och direktuppspelas från Adobes webbplats. För att metoden SoundMixer.stopAll()
ska kunna användas måste alla ljud vara åtkomliga. (Ett SoundLoaderContext-objekt kan användas för att kontrollera korsdomänprincipfilen.) Varje ljud har också en händelseavlyssnare som anropas om ett IO-fel uppstår när ljudfilen läses in. Ett muteButton
-textfält skapas också. Det lyssnar efter click-händelser, som utlöser anrop av metoden muteButtonClickHandler()
.
Om textfältets innehåll är "MUTE" i metoden muteButtonClickHandler()
kontrollerar metoden areSoundsInaccessible()
om ljudblandaren har åtkomst till filerna. Om filerna är åtkomliga stoppar metoden stopAll()
ljuden. Om textfältet markeras igen börjar det första ljudet spelas upp och textfältets innehåll ändras till "MUTE" igen. Den här gången stänger metoden stopAll()
av det enda ljud som spelas upp. Observera att ljudkanalens stop()
-metod också kan användas för att stoppa ett specifikt ljud som är tilldelat till kanalen. (Om du vill använda kanalfunktionen måste ljudet tilldelas om till kanalen varje gång metoden play()
anropas.)
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); } } }
Tue Jun 12 2018, 01:40 PM Z