如何为特定音量设置特定音效?

时间:2013-12-20 08:33:05

标签: actionscript-3 flash volume flashdevelop audio

我有一个变量集

var vol = 0.25;

这个var随需求变化而且运行正常。

在我的Flash游戏中,我在movieclips上有一些声音效果,只有在播放影片剪辑时才会发出声音。

我想在一个as3文件中将所有声音效果设置为相同的音量。

虽然我在as3的时间轴上播放了我的声音,但有没有办法将所有声音放在一个as3文件上,以便将它们全部设置为特定的音量。 / p>

我在考虑这样的事情:

var isSoundOn = true;
if (isSoundOn == true) {

    // get all sounds that i would like to change volume on
    // if in game play and any of the sound effects are ready - play all these sounds with my specific volume setting.

}

我的代码看起来有点像这样但不起作用

在FlashDevelop中...我的主要类......

public class Platformer extends GameLoop
{
public var redMonster:RedMonsterFla;
public var SoundFxVol:Number;


public function Platformer( )
{



}

    // here i have functions that open a popUp
    // inside the popUp i can change variable "SoundFxVol" with my volume slider  


    // here i would like to set my volume to some of my movieClips with soundFx

public function set VolumeForSoundEffects(value:Number):void
{
    // set array of movieClipsThatContainSound


    var movieClipsThatContainSound:Array = new Array( redMonster );

    var st:SoundTransform = new SoundTransform(value);

    SoundFxVol = value;

    for each( var mc:MovieClip in movieClipsThatContainSound  ) mc.soundTransform = st;
}

public function get VolumeForSoundEffects():Number
{
    return SoundFxVol;
}

}

我flash我有一个名为RedMonster的movieClip,它与as3的库链接为RedMonsterFla; 在redMonster MovieClip上我有很多标签,其中一个是跳 - 这有声音。 redMonster时间轴上没有代码。

1 个答案:

答案 0 :(得分:1)

您可以使用影片剪辑'soundTransform属性来调整在其中播放的声音的音量。但是,你不能设置一个var并让所有依赖的SoundTransform对象自己调整,所以写一个setter属性函数。

private var vol:Number=1.0;
public function set volume(value:Number):void {
    var st:SoundTransform=new SoundTransform(value);
    vol=value;
    for each (var mc:MovieClip in whateverArray) mc.soundTransform=st;
}
public function get volume():Number { return vol; }

whateverArray应该是包含所有依赖于此处设置音量的影片剪辑实例的数组。