I have a variable set
var vol = 0.25;
this var changes on demand and works fine.
In my flash game I have some sound effects on movieclips
that sound only when the movie clips are being played.
I would like to set all of my sound effects to the same volume in one as3
file.
Although I have my sounds playing in my timeline on as3
, is there a way to get all of my sounds together on one as3
file in order to set them all to a specific volume.
I was thinking about something like this:
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.
}
my code looks a bit like this but doesn't work
In FlashDevelop... My main Class...
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;
}
}
I flash I have a movieClip called RedMonster with a library linkage to as3 as RedMonsterFla; On redMonster MovieClip I have lots of labels, one of them is jump - this has a sound. There is no code on the redMonster timeline.
You can use your movie clips' soundTransform
property to adjust volume of those sounds that are played within it. But, you cannot set a var and get all dependant SoundTransform
objects to adjust themselves, so write a setter property function.
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
is supposed to be the array that holds all the movie clip instances that are dependant on setting volume here.