【问题标题】:Replaying sound in AS3在 AS3 中重放声音
【发布时间】:2013-11-25 04:36:35
【问题描述】:

我有一个按钮,可以播放带有鼠标翻转事件的 5 秒歌曲片段。我希望它在每次滚动时继续播放歌曲,但我不知道如何让声音循环播放。 到目前为止,这是我的代码:

var songOne:Song1 = new Song1();
var SongOneChannel:SoundChannel;
var soundPlaying:Boolean=false;

 stop();
btnOne.addEventListener(MouseEvent.ROLL_OVER,playSongOneFunction);
function playSongOneFunction(event:MouseEvent):void
 {
if(soundPlaying==false)
{
    SongOneChannel = songOne.play();
    trace("Did the Sound just start playing?");
    soundPlaying=true;
}
 }

【问题讨论】:

  • 如果在 5 秒内滚动按钮的速度超过一次会发生什么?
  • 唯一的问题是不能循环播放声音吗?当有人按下按钮时,它应该停止播放吗?下次滚动它时,它应该从停止的地方继续播放吗?您需要提供更多细节,否则您可能不会得到您想要的答案。 (你会浪费人们的时间)
  • 我需要做的是,每次有人滚动按钮时,歌曲都会播放,但前提是它停止了。我不希望它自己播放,但如果有人滚动按钮并且它停止播放,我需要它重播

标签: actionscript-3 flash loops audio reset


【解决方案1】:

只需将侦听器添加到 SongOneChannel SoundComplete。并在监听器函数中更新声音播放。

【讨论】:

    【解决方案2】:

    soundPlaying 永远不会被重置为 false,因此下次您滚动按钮时,它不会进入 if 语句。

    按照@Dub4ek 的建议执行并添加soundComplete 事件,以便您可以重置soundPlaying,或者完全摆脱检查,因为您并不真正需要它 - 每次调用songOne.play(),生成了新的SoundChannel,因此您可以多次播放声音(如果这是您想要的行为)。

    function playSongOneFunction(event:MouseEvent):void
    {
        songOne.play();
    }
    

    【讨论】:

    • 感谢到目前为止的帮助,这解决了我每次翻身时播放声音的问题。但我想知道是否有办法让它一次只播放一次?所以它只会在声音停止时重新开始。
    • 如果你只希望它播放一次,那么你上面的布尔解决方案应该是好的;你只需要重置soundPlaying bool。添加一个完整的监听器并在那里重置(尽管在PlaySongOneFunction之外添加监听器,否则你每次都会添加一个新的)
    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多