JQuery と SoundManger2 を使ってみたところ、JQuery が使用されている特定の状況で SoundManager に問題があることに気付きました。また、Firefox (3.6.13) または IE (8.0.7600) が使用されているかどうかにも依存します。
私がテストしようとしているのは、サウンドを再生できるかどうかだけです。各例では、最初にコードを示し、コードの後に 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 : 成功; FireFox : 成功
次のコードでは、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 : 成功; FireFox : 失敗
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 : 失敗; FireFox : 成功
静的な Web ページを作成するだけであれば、これは問題になりません。レイヤーなどを使用してasp.net MVCでコードを作成していますが、ロードされる順序が重要です。これが、私が最初にこの問題に遭遇した方法です。
私は JQuery と SoundManger の初心者なので、何か間違ったことをしている可能性が非常に高いです。これを改善する方法についてコメントがある場合は、回答をお願いします。これを理解する前に、しばらくキーボードに頭をぶつけて、これが他の人の助けになることを願っています.
アップデート
サウンドが再生されない場合、SoundManager2 から次の情報を取得します
-- SoundManager 2 のロードに失敗しました (セキュリティ/ロード エラー) --
soundManager.disable(): シャットダウン
soundManager: 初期化に失敗しました。
soundManager: /Project/PublicWebSite/Scripts/swf/soundmanager2.swf が有効なパスであることを確認します。
soundManager: 予想される時間内に Flash の応答がありません。考えられる原因: soundmanager2_debug.swf の読み込みに失敗した (および/または Flash 8+ が存在しない)、Flash がブロックされている、または JS-Flash セキュリティ エラーが発生している可能性があります。詳細なデバッグ情報については、SWF 出力を参照してください。
soundManager: せっかちで、まだ Flash を待っています...
soundManager::initMovie(): Flash からの ExternalInterface 呼び出しを待っています..
soundManager::initMovie(): EMBED 要素を取得しました (JS で作成)
soundManager::createMovie(): 試行中./soundmanager2_debug.swf を読み込む
-- SoundManager 2 V2.97a.20110123 (AS2/Flash 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 : 成功; FireFox : 成功
BarDev