【问题标题】:Play sounds in sequence when each has ended当每个声音结束时按顺序播放声音
【发布时间】:2011-01-03 12:30:00
【问题描述】:

我想播放 3 种声音,它们在我的音乐库中。
我可以使用soundName.start(0,1) 使用以下代码播放其中的任何一个:

firstSound = new Sound();
firstSound.attachSound("Sound1");
secondSound = new Sound();
secondSound.attachSound("Sound2");
thirdSound = new Sound();
thirdSound.attachSound("Sound3");

我遇到的问题是,我怎么知道 sound1 何时播放完毕,然后我可以立即播放 sound2 和 sound3?

【问题讨论】:

    标签: flash actionscript audio actionscript-2


    【解决方案1】:

    实际上在 AS2 中存在一种方法,使用 onSoundComplete:

    soundFX = new Sound();
    soundFX.loadSound("sound.wav", true);
    //or, if your sound is already in the library, 
    //use soundFX.attachSound("librarySoundInstanceName");
    soundFX.onSoundComplete = function() 
     {
    //DO some action
    /////////////
    gotoAndStop("new12");
    die();
    newLevel();
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用帧率和声音长度来计算声音结束的帧数。 之后您可以拨打AddFrameScript(frameNum, function) 并添加代码以播放下一个声音。

      【讨论】:

      • 这听起来相当复杂,我不知道从哪里开始。我认为这样的事情没有事件呢?我试过 firstSound.addEventListener("complete",myListener); var myListener = new Object(); myListener.complete = function() { trace("done"); };但这不会触发。
      • 这是获取声音持续时间的方法: var c_snd:Sound = new Sound(); c_snd.attachSound("linked_sound");跟踪('持续时间:'+((c_snd.duration/1000)
      • 您好,感谢您提供的代码,我认为 AddFrameScript 是 AS3,但多亏了您,我也许可以让它在某种形式的延迟下工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2013-02-05
      • 2012-02-16
      • 2019-07-29
      相关资源
      最近更新 更多