Reputation:
I have a sound with a length of 1:30 min. I embedded it into my swf and set it to sync with the frame. I need is to be able to pause and play this sound via ActionScript.
Does anyone have any idea how to do this?
Upvotes: 2
Views: 19316
Reputation: 2103
If you want to control embedded sound globally, There is a class is AS3 called SoundMixer
. You can control all sound globally as below code,
SoundMixer.soundTransform = new SoundTransform(0); //This will mute all sound from SWF.
SoundMixer.soundTransform = new SoundTransform(1); //This will unmute all sound from SWF.
But if you want to control individual sounds embedded in MovieClip
s, above method wont work. In this case, Every Sprite
and MovieClip
class has a property called soundTransform
. You can change soundTransform
property of objects of MovieClip
or Sprite
and control them.
You can also give linkage to Sound
in library and create sound dynamically. In this way though, syncing couldn't be accomplish.
Upvotes: 0
Reputation: 51
//number that is redefined when the pause button is hit
var pausePoint:Number = 0.00;
//a true or false value that is used to check whether the sound is currently playing
var isPlaying:Boolean;
//think of the soundchannel as a speaker system and the sound as an mp3 player
var soundChannel:SoundChannel = new SoundChannel();
var sound:Sound = new Sound(new URLRequest("SOUND.mp3"));
//you should set the xstop and xplay values to match the instance names of your stop button and play/pause buttons
xstop.addEventListener(MouseEvent.CLICK, clickStop);
xplay.addEventListener(MouseEvent.CLICK, clickPlayPause);
soundChannel = sound.play();
isPlaying = true;
function clickPlayPause(evt:MouseEvent) {
if (isPlaying) {
pausePoint = soundChannel.position;
soundChannel.stop();
isPlaying = false;
} else {
soundChannel = sound.play(pausePoint);
isPlaying = true;
}
}
function clickStop(evt:MouseEvent) {
if (isPlaying) {
soundChannel.stop();
isPlaying = false;
}
pausePoint = 0.00;
}
Upvotes: 5
Reputation: 51837
I just did a test to see it works.
Here's the basic code:
//playBtn and pauseBtn are two basic buttons
//sound is the movie clip that holds the synched sound in its timeline
playBtn.addEventListener(MouseEvent.CLICK, playSound);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseSound);
function playSound(event:MouseEvent):void{
sound.play();
}
function pauseSound(event:MouseEvent):void{
sound.stop();
}
Hope it helps
Upvotes: 3