2

JQuery와 SoundManger2를 사용하여봤을 때, JQuery가 사용되는 특정 상황에서 SoundManager에 문제가 있음을 발견했습니다. 또한 Firefox (3.6.13) 또는 IE (8.0.7600)가 사용되는지 여부에 따라 다릅니다.JQuery와 SoundManger가 훌륭하게 재생되지 않습니다.

내가 테스트하려고하는 것은 날씨가 나는 소리를 낼 수 있는지 아닌지입니다. 각 예제에서 먼저 코드를 보여줄 것이고 코드 뒤에 IE와 FireFox가 성공했는지 실패했는지를 확인할 것입니다.


<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/soundmanager2.js"></script> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/jquery-1.5.js"></script>  
    <script type="text/javascript"> 
     soundManager.debugMode = true; 
     soundManager.defaultOptions.volume = 50 
     soundManager.debugFlash = true; // enable flash debug output for this page 
     soundManager.url = '/Project/PublicWebSite/Scripts/swf/soundmanager2.swf'; 
     soundManager.flashVersion = 8; // optional: shiny features (default = 8) 
     soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in 
     //enable HTML5 audio support, if you're feeling adventurous. iPad/iPhone will always get this. 
     //soundManager.useHTML5Audio = true; 
     soundManager.onready(function() { 
      soundManager.createSound('helloWorld', '/Project/PublicWebSite/Content/Sounds/Chime.mp3'); 
      soundManager.play('helloWorld'); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

IE : 성공; 파이어 폭스 : 나는 JQuery와 문서 부하)와 SoundManager (사운드에 대한 구성을 추가 제외하고는 코드의 모든 것을 다음에서 성공


은 동일합니다.

<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/soundmanager2.js"></script> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/jquery-1.5.js"></script>  
    <script type="text/javascript"> 

     $(function() { 
      soundManager.debugMode = true; 
      soundManager.defaultOptions.volume = 50 
      soundManager.debugFlash = true; // enable flash debug output for this page 
      soundManager.url = '/Project/PublicWebSite/Scripts/swf/soundmanager2.swf'; 
      soundManager.flashVersion = 8; // optional: shiny features (default = 8) 
      soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in 
      //enable HTML5 audio support, if you're feeling adventurous. iPad/iPhone will always get this. 
      //soundManager.useHTML5Audio = true; 
      soundManager.onready(function() { 
       soundManager.createSound('helloWorld', '/Project/PublicWebSite/Content/Sounds/Chime.mp3'); 
       soundManager.play('helloWorld'); 
      }); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

IE : 성공; 파이어 폭스 :


JQuery와 및 SoundManger 스크립트의 순서를 변경 실패는

<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/jquery-1.5.js"></script>  
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/soundmanager2.js"></script> 
    <script type="text/javascript"> 

     $(function() { 
      soundManager.debugMode = true; 
      soundManager.defaultOptions.volume = 50 
      soundManager.debugFlash = true; // enable flash debug output for this page 
      soundManager.url = '/Project/PublicWebSite/Scripts/swf/soundmanager2.swf'; 
      soundManager.flashVersion = 8; // optional: shiny features (default = 8) 
      soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in 
      //enable HTML5 audio support, if you're feeling adventurous. iPad/iPhone will always get this. 
      //soundManager.useHTML5Audio = true; 
      soundManager.onready(function() { 
       soundManager.createSound('helloWorld', '/Project/PublicWebSite/Content/Sounds/Chime.mp3'); 
       soundManager.play('helloWorld'); 
      }); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

IE 참조 : 실패를; 파이어 폭스 : 모든 I 정적 웹 페이지를 만들고 있었다 일 경우 성공


이 문제가되지 않을 것입니다. 레이어를 사용하여 asp.net MVC에서 코드를 작성하고 물건을로드하는 순서가 중요합니다. 이것은 내가 orginally이 문제에 비틀 거린 방법입니다.

저는 JQuery와 SoundManger의 멍청한 마음으로 뭔가 잘못하고있는 가능성이 아주 큽니다. 누구든지이 작업을 수행하는 방법에 대한 의견이 있으면 답변을 드리겠습니다. 나는 이것을 이해하고 다른 사람을 도울 수 있기를 바란다.


업데이트

소리가 SoundManager2

에서 나는 다음과 같은 정보를 얻을 재생되지 않습니다

-)와 SoundManager (사운드 2 (보안 /로드 오류)로드하지 못했습니다 -
soundManager.disable을 () : 종료
soundManager : 초기화하지 못했습니다.
soundManager : /Project/PublicWebSite/Scripts/swf/soundmanager2.swf가 유효한 경로인지 확인하십시오.
soundManager : 아니 예상 된 시간 내에 플래시 응답. 예상 원인 : soundmanager2_debug.swf로드 실패 (또는 Flash 8 이상 없음), 플래시 차단 또는 JS-Flash 보안 오류. 자세한 디버그 정보는 SWF 출력을 참조하십시오.
soundManager : 참을성이 없어서 여전히 플래시를 기다리고 있습니다 ...
soundManager :: initMovie() : Flash에서 ExternalInterface 호출을 기다리는 중입니다.
SoundManager (사운드 관리자) :: initMovie())와 SoundManager (사운드 관리자)
:: createMovie을 ((JS 통해 생성) EMBED있어 소자 :
./soundmanager2_debug.swf로드하려고 - 2)와 SoundManager (사운드 V2.97a.2011(AS2/플래시 8), 일반 폴링 -

Firebug 및 Fiddler에서 SoundManger가 soundmanager2_debug.swf @/project/PublicWebSite/static /을 찾으려고 시도합니다. 문제는 내 swf 파일이 거기에 있지 않다는 것입니다. 이것은 내 HTML 파일의 위치입니다. 올바른 방향으로 날을 지적,


업데이트

사이먼. http://www.schillmania.com/projects/soundmanager2/doc/getstarted/#lazy-loading에서 언급 한 것처럼 soundmanger2.js 파일에서 아무 것도 변경할 필요가 없었습니다.
SoundManger 스크립트에 대한 참조를 제거하고 JQuery ajax 호출을 사용하여 스크립트를 동적으로로드했습니다.

<html> 
<head> 
    <title></title> 
    <script type="text/javascript" src="/Project/PublicWebSite/Scripts/jquery-1.5.js"></script>  

    <script type="text/javascript"> 

     $(function() { 
      $.ajax({ 
       url: '/Project/PublicWebSite/Scripts/soundmanager2.js', 
       dataType: 'script', 
       success: 
       { 
        soundManager.debugMode = true; 
        soundManager.defaultOptions.volume = 50 
        soundManager.debugFlash = true; // enable flash debug output for this page 
        soundManager.url = '/Project/PublicWebSite/Scripts/swf/soundmanager2.swf'; 
        soundManager.flashVersion = 8; // optional: shiny features (default = 8) 
        soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in 
        //enable HTML5 audio support, if you're feeling adventurous. iPad/iPhone will always get this. 
        //soundManager.useHTML5Audio = true; 
        soundManager.onready(function() { 
         soundManager.createSound('helloWorld', '/Project/PublicWebSite/Content/Sounds/Chime.mp3'); 
         soundManager.play('helloWorld'); 
        }); 
       } 

      }); 

     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

IE : 성공; 파이어 폭스 : 성공은

BarDev

답변

3

문제는 여기에 당신이 DOM-ready 이벤트에 Soundmanager2의 구성 결합되어, 특정 있지만, 사실 JQuery와 사용하지 않습니다. Soundmanager2 자체도이 이벤트에로드 루틴을 바인딩하므로이 이벤트가 발생할 때까지 구성 코드가 실행되지 않으면 브라우저가 해당 이벤트 처리기를 호출하는 ordner에 따라 이미 너무 늦을 수 있습니다.

저는 SM2 전문가가 아니며 (사용하지 않았 음) 관리자의 "게으른로드 중"기능을 우연히 만났습니다. 도움이 될 수 있습니다. 이는 Soundmanager2의로드 프로세스를 지연시키고 명시 적으로 수행하도록 허용해야합니다. 구성 코드가 호출 된 후로드하십시오. http://www.schillmania.com/projects/soundmanager2/doc/getstarted/#lazy-loading

0

최근에 SoundManager2를 사용하고 w/jQuery를 $ .fn으로 통합하는 오디오 플레이어 프레임 워크를 출시했습니다. - 사용 및/또는 프론트 엔드 디자인 jPlayer에 .. 비슷한 사용자 정의하지만, 매우 간단/추가 재생 기능 (예 : RTMP 스트리밍, 전체 HTML5 지원) w, 예, 테스트 등 :

https://github.com/APMG/APMPlayer

관련 문제