Flex tiptrik – ovládání zvuku

12.11.2007· Autor: Ondřej Brichta· Přidat komentář

Ovládání hlasitosti zvuku je v ActionScriptu 3.0 poněkud složitější, než jsme byly zvyklí u jeho předchozí verze. Dnes si ukážeme, jak bychom ovládali zvuk ve Flex aplikaci.

Sound třída

V ActionScriptu 2.0 jsme byli zvyklí ovládat přehrávaný zvuk přímo pomocí metod, které ke třídě Sound patřily. Pro ovládání hlasitosti jsme tak mohli využívat metodu setVolume:

var my_sound:Sound = new Sound();
my_sound.loadSound("01.mp3", true);
my_sound.setVolume(10);

Metoda setVolume umožňovala měnit hlasitost zvuku v rozsahu od 0 do 100. Obdobné použití měla i metoda setPan, která umožňovala přesouvat zvuk mezi levým a pravým reproduktorem:

var my_sound:Sound = new Sound();
my_sound.loadSound("01.mp3", true);
my_sound.setPan(-100);

Hodnoty se mohly pohybovat v rozmezí od -100(hraje pouze levý reproduktor) do +100(hraje pouze pravý reproduktor).

Sound třída v AS3.0

V nové verzi ActionScriptu přišla třída Sound o výše uvedené metody, ovládání hlasitosti zvuku tak bylo svěřeno třídě SoundTransform. Aby to ale nebylo tak jednoduché, vystupuje zde do přehrávání zvuků třída SoundChannel, která se stará o každý přehrávaný zvuk aplikace.

Pokaždé, když spustíme přehrávání konkrétního zvuku, dostaneme zpět referenci na objekt SoundChannel, díky kterému můžeme ovlivňovat přehrávání samotného zvuku:

var mySound:Sound;
var channel:SoundChannel;
var mp3:String = "01.mp3";
var req:URLRequest = new URLRequest(mp3);
mySound = new Sound();
mySound.load(req);
channel = mySound.play();

Ovšem ovládání hlasitosti zajišťuje třída SoundTransform, takže pro snížení hlasitosti na 10% použijeme tento skript:

var transform:SoundTransform = channel.soundTransform;
transform.volume = 0.1;
channel.soundTransform = transform;

Nesmíme zapomenout, že většina vlastností, které měly v ActionScriptu 2.0 rozmezí hodnot 0 až 100 nebo -100 až, 100 mají v ActionScriptu 3.0 rozmezí od 0 do 1, respektive od -1 do 1.

Pokud bychom si chtěli připravit jednoduchou aplikaci pro načtení a přehrávání externího MP3 zvuku, můžeme Flex aplikaci využít v této podobě:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
 <mx:Script>
 <![CDATA[
 import mx.managers.CursorManager;
 private var mySound:Sound;
 private var channel:SoundChannel;
 private var mp3:String = "01.mp3";
 private function loadSound():void{
 var req:URLRequest = new URLRequest(mp3);
 mySound = new Sound();
 mySound.addEventListener(Event.COMPLETE,soundLoaded);
 mySound.load(req);
 CursorManager.setBusyCursor();
 }
 private function soundLoaded(evt:Event):void{
 channel = mySound.play();
 CursorManager.removeBusyCursor();
 }
 private function setPan(val:Event):void{
 var slider:HSlider = val.currentTarget as HSlider;
 var transform:SoundTransform = channel.soundTransform;
 transform.pan = slider.value;
 channel.soundTransform = transform;
 }
 private function setVolume(val:Event):void{
 var slider:HSlider = val.currentTarget as HSlider;
 var transform:SoundTransform = channel.soundTransform;
 transform.volume = slider.value;
 channel.soundTransform = transform;
 }
 ]]>
 </mx:Script>
 <mx:Button click="loadSound()" label="Přehrát zvuk"/>
 <mx:HSlider value="0" change="setPan(event)" id="pan_transform" minimum="-1" maximum="1" snapInterval="0.1"/>
 <mx:HSlider value="1" change="setVolume(event)" id="pan_volume" minimum="0" maximum="1" snapInterval="0.1"/>
</mx:Application>

Ondřej Brichta Vývojář multimediálních aplikací, šéfredaktor Flash.cz, školitel produktů Flash, Flex, Flash Media Server

Web: http://www.obria.cz |

Motto: <°))))><

Seriál: Tipy a triky

Tipy a triky je seriál zaměřený na zajímavá řešení a vylepšení flashových aplikací

Komentáře k článku  

Přihlášení uživatele