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í