我有一个变量集
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时间轴上没有代码。
答案 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
应该是包含所有依赖于此处设置音量的影片剪辑实例的数组。