2013-07-25 59 views
0

发挥我的soundmanager2启动和运行,这并不在IOS触发一个很简单的例子:soundmanager2 HTML5音频不会在iOS

$(document).ready(function(){ 

    var introSound; 

    setupSoundManager(); 

    function setupSoundManager(){ 
     soundManager.setup({ 

     // where to find the SWF files, if needed 
     url: 'swf/', 
     preferFlash: false, 
     onready: function() { 
      // SM2 has loaded, API ready to use e.g., createSound() etc. 
      createSound(); 
     }, 

     ontimeout: function() { 
      // Uh-oh. SWF missing, Flash blocked or other issue 
      console.log('cant setup'); 
     } 

     }); 
    } 

    function createSound(){ 
     introSound = soundManager.createSound({ 
     url: 'intro-with-drums.mp3', 
     // callback for when the sound has loaded 
     onload: function() { 
     soundManager._writeDebug(this.id + ' loaded'); 
     enablePlay(this); 
     } 
     }).load(); 
    } 


    function enablePlay(thisSound){ 
     $('#sound').on('click',function(){ 
     introSound.play(); 
     }); 
    } 



    }); 

桌面经过负载此阶段:

sound0:使用HTML5 soundmanager2.js:1190 sound0:负载(前奏与 - drums.mp3)soundmanager2.js:1190 sound0:loadstart soundmanager2.js:1190 sound0:暂停 sound0:等待loadedmetadata soundmanager2.js:1190 sound0:loadeddata soundmanager2.js: 1190 sound0:canplay soundmanager2.js:1190 sound0:的onload()soundmanager2.js:1188个 sound0加载

和iOS只做:

sound0:使用HTML5 soundmanager2.js:1190 sound0:负载(介绍与 - drums.mp3)soundmanager2.js:1190 sound0:loadstart soundmanager2.js:1190 sound0:暂停

我如何得到这方面的工作在iOS?

回答

1

大多数移动浏览器会拒绝加载/缓冲任何音频/视频,而无需直接的物理交互。这意味着您无法在页面加载或任何异步功能(如setTimeout)中触发初始播放/预加载。由于这个限制,introSound永不加载,这意味着enablePlay永远不会被调用,这意味着您的#sound元素永远不会将事件监听器添加到它。