【问题标题】:Streaming audio in Flash is playing multiple times, overlappingFlash 中的流式音频播放多次,重叠
【发布时间】:2011-09-13 00:30:45
【问题描述】:

以下 AS3 代码有时会导致音频多次播放,几乎同时播放,就像一个疯狂的回声。它通常适用于该 URL,但当我使用 https://soundcloud.com url 时,它总是吓坏了。在极少数情况下,我认为问题甚至发生在本地文件上。我从其他地方复制了这段代码,所以我不完全理解它。你看到这个实现有问题还是 Flash 只是疯了?

var url:String = "http://md9.ca/portfolio/music/seaforth.mp3"; 

var request:URLRequest = new URLRequest(url);  
var s:Sound = new Sound();  
s.addEventListener(Event.COMPLETE, completeHandler);  
s.load(request);  var song:SoundChannel = s.play();  
song.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);  


var time:Timer = new Timer(20);  
time.start();

function completeHandler(event:Event):void {    
  event.target.play();  
}  

function soundCompleteHandler(event:Event):void {   
  time.stop();  
}

【问题讨论】:

    标签: flash actionscript-3 audio stream


    【解决方案1】:

    您在 Sound 对象上调用了两次 play()。一次是在您创建变量 song 时,另一次是在文件加载完成时。

    您可能希望以不同的方式构建代码。

    var url:String = "http://md9.ca/portfolio/music/seaforth.mp3"; 
    
    var song:SoundChannel;
    var request:URLRequest = new URLRequest(url);  
    var s:Sound = new Sound();  
    s.addEventListener(Event.COMPLETE, onLoadComplete );  
    s.load(request);
    
    function onLoadComplete(event:Event):void 
    {    
      song = s.play();
      song.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);   
      s.removeEventListener( Event.COMPLETE, onLoadComplete );
    }  
    
    function soundCompleteHandler(event:Event):void 
    {   
      trace( 'sound is complete' );  
      song.removeEventListener( Event.SOUND_COMPLETE, soundCompleteHandler );
    }
    

    我删除了 Timer 代码,因为它没有任何功能。

    【讨论】:

    • 谢谢,完美!我想我应该看到那个游戏发生了两次。
    猜你喜欢
    • 2013-08-03
    • 2011-01-06
    • 2018-03-28
    • 1970-01-01
    • 2014-09-07
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多