Styra ljudvolym och panoreringFlash Player 9 och senare, Adobe AIR 1.0 och senare Ett individuellt SoundChannel-objekt styr både vänster och höger stereokanal för ett ljud. Om ett MP3-ljud är mono, innehåller de vänstra och högra stereokanalerna för SoundChannel-objektet identiska ljudvågor. Du kan ta reda på amplituden i varje stereokanal för ljudet som spelas upp med leftPeak- och rightPeak-egenskaperna i SoundChannel-objektet. De här egenskaperna visar maximal amplitud för själva ljudvågen. De representerar inte den faktiska uppspelningsvolymen. Den faktiska uppspelningsvolymen är en funktion för amplituden för ljudvågen och volymvärdena som angetts i SoundChannel-objektet och klassen SoundMixer. Du kan använda egenskapen pan för ett SoundChannel-objekt för att specificera olika volymnivåer för var och en av de vänstra och högra kanalerna under uppspelningen. Pan-egenskapen kan ha ett värde från -1 till 1, där -1 betyder att den vänstra kanalen spelar på högsta volym medan den högra kanalen är tyst och 1 betyder att den högra kanalen spelar på högsta volym medan den vänstra kanalen är tyst. Numeriska värden mellan -1 och 1 anger proportionella värden för de vänstra och högra kanalvärdena och värdet 0 betyder att båda kanalerna spelar på en balanserad, medelvolymnivå. I följande kodexempel skapas ett SoundTransform-objekt med ett volymvärde på 0,6 och ett panoreringsvärde på -1 (högsta volym på vänstra kanalen och ingen volym på den högra kanalen). SoundTransform-objektet överförs som en parameter till play()-metoden vilken använder SoundTransform-objektet på det nya SoundChannel-objektet som skapas för att styra uppspelningen. var snd:Sound = new Sound(new URLRequest("bigSound.mp3")); var trans:SoundTransform = new SoundTransform(0.6, -1); var channel:SoundChannel = snd.play(0, 1, trans); Du kan ändra volym och panorering medan ett ljud spelas upp genom att ange pan- eller volume-egenskaperna för ett SoundTransform-objekt och sedan använda objektet som soundTransform-egenskap för ett SoundChannel-objekt. Du kan också ange globala volym- och panoreringsvärden för alla ljud på en gång med soundTransform-egenskapen för klassen SoundMixer enligt följande exempel: SoundMixer.soundTransform = new SoundTransform(1, -1); Du kan också använda ett SoundTransform-objekt för att ange volym- och panoreringsvärden för ett Microphone-objekt (se Hämta ljudindata) och för Sprite-objekt och SimpleButton-objekt. I följande exempel växlar panoreringen av ljudet från den vänstra kanalen till den högra och tillbaka igen medan ljudet spelas upp. import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("bigSound.mp3"); snd.load(req); var panCounter:Number = 0; var trans:SoundTransform; trans = new SoundTransform(1, 0); var channel:SoundChannel = snd.play(0, 1, trans); channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(event:Event):void { trans.pan = Math.sin(panCounter); channel.soundTransform = trans; // or SoundMixer.soundTransform = trans; panCounter += 0.05; } function onPlaybackComplete(event:Event):void { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } Koden börjar med att läsa in en ljudfil och sedan skapa ett nytt SoundTransform-objekt med volymen inställd på 1 (full volym) och panoreringen på 0 (jämnt balanserat mellan vänster och höger). Sedan anropas metoden snd.play() och SoundTransform-objektet skickas som en parameter. När ljudet spelas upp körs onEnterFrame()-metoden upprepade gånger. onEnterFrame()-metoden använder Math.sin()-funktionen för generering av ett värde mellan -1 och 1, ett intervall som motsvarar de acceptabla värdena för SoundTransform.pan-egenskapen. Det nya värdet anges för pan-egenskaper i SoundTransform-objektet och kanalens soundTransform-egenskap ställs in att använda det ändrade SoundTransform-objektet. Om du vill köra det här exemplet byter du ut filnamnet bigSound.mp3 mot en lokal MP3-fil. Sedan kör du exemplet. Nu hör du hur den vänstra kanalvolymen höjs medan den högra kanalvolymen sänks och omvänt. I det här exemplet kan samma effekt uppnås genom att ange soundTransform-egenskapen för klassen SoundMixer. Men det skulle påverka panoreringen av alla ljud som spelas upp, inte endast ljudet som spelas upp av det här SoundChannel-objektet. |
|