我目前正在使用以下代码播放项目库中的录音。
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
var sound1:Sound = new audio1();
var sound2:Sound = new audio2();
var mySoundChannel:SoundChannel = new SoundChannel();
function stopSound():void
{
//This stops all sound in the sound channel.
//If there is nothing playing, nothing happens.
mySoundChannel.stop();
}
//In this function, we create an argument that allows us to tell the function
//what sound to we want it to play.
function playSound(soundname:String):void
{
try
{
mySoundChannel = this[soundname].play(0, 0);
}
catch(error:ReferenceError)
{
trace("playSound: That sound name doesn't exist.");
return;
}
}
//Hook up buttons-->
button1.buttonMode = true;
button1.useHandCursor = true;
button2.buttonMode = true;
button2.useHandCursor = true;
button1.addEventListener(MouseEvent.CLICK, button1click);
button2.addEventListener(MouseEvent.CLICK, button2click);
function button1click(evt:Event):void
{
stopSound();
playSound("sound1");
}
function button2click(evt:Event):void
{
stopSound();
playSound("sound2");
}
单击按钮时,我需要暂停当前播放的音频。我该怎么做?
答案 0 :(得分:0)
您需要对当前代码执行五项操作才能暂停和恢复当前播放的声音:
第1步:
var currentSound:String = "";
var pausePosition:Number = 0;
第2步:我们将在刚刚创建的第二个变量中保存音频的当前位置。我们可以使用mySoundChannel.position属性获取音频的当前播放位置,该属性返回Number值(与我们给出pausePosition变量的Number类型相匹配)。
function pauseSound():void
{
//If there's a song to pause...
if(currentSound != "")
{
//Get pause position.
pausePosition = mySoundChannel.position;
//Stop the sound directly.
mySoundChannel.stop();
}
}
注意我们没有调用stopSound()。这是有充分理由的。我们将很快在该函数中添加一行代码,我们不想在pauseSound()中使用。
第3步:现在我们创建恢复音频的功能。请注意,这与playSound()不同。我们告诉它从pausePosition开始播放,而不是从0开始播放(声音片段的开头)。
function resumeSound():void
{
//If there's a song to resume...
if(currentSound != "")
{
//Start playing the current audio from the position we left off at.
mySoundChannel = this[currentSound].play(pausePosition);
}
}
第4步:由于我们现在正处理在步骤1中声明的变量,因此我们需要调整playSound()和stopSound()的工作方式。
在playSound()中,我们不是将声音名称传递给声道,而是将声音名称保存为currentSound。
function playSound(soundname:String):void
{
try
{
currentSound = soundname
mySoundChannel = this[currentSound].play(0, 0);
}
catch(error:ReferenceError)
{
trace("playSound: That sound name doesn't exist.");
return;
}
}
在stopSound()中,我们需要在停止时实际清除currentSound和pausePosition变量,以确保resumeSound在完全停止后不启动音频。
function stopSound():void
{
//This stops all sound in the sound channel.
//If there is nothing playing, nothing happens.
mySoundChannel.stop();
//Clear our variables.
currentSound = "";
pausePosition = 0;
}
GOTCHA警告:通常,你可以通过在第二个参数(我有5个)中传递0以外的整数来循环音频:
mySoundChannel = this[currentSound].play(0, 5);
在上面的代码中,声音将从头开始播放,并重复五次。
但是,如果您从0以外的任何位置开始播放音频,实际发生的是音频将在您开始的位置循环,而不是在开头。
也就是说,如果您使用此代码:
mySoundChannel = this[currentSound].play(1000, 5);
声音将循环五次,但每次声音在循环中重新开始时,它将从位置1000开始播放,而不是声音的开头(0)。
我希望能回答你的问题!