このトピックについてすでにたくさんの質問が寄せられていることは知っていますが、どれも私の問題を解決していません。おそらく何かが足りないだけです.
とにかく、ここに契約があります。オーディオやサウンドエフェクトなどを再生する幸せな小さなhtml5ゲームがあり、html5をサポートするすべてのブラウザーでうまく機能します。ただし、フラッシュ フォールバックを必要としないもの。大したことないよね?どうやらそうではないようです... JS から mp3 の URL を受け取り、mp3 を取得して再生する小さな swf を作成しました。オーディオ ファイルがたくさんあるので、この方法を使用する必要があり、各ファイルに対して swf ファイルを作成することを避けたいと考えています。
これが AS です。ExternalInterface を使用して、js から変数を受け取ります。
import flash.external.*;
ExternalInterface.addCallback("callFlash", playSound);
function playSound(file:String):void {
var s:Sound = new Sound();
s.load(new URLRequest(file));
s.play();
}
そして、私のJSは変数を渡します:
var flash = $('#fbplayer')[0];
console.log(flash); //returns flash object so jquery is not the issue
flash.callFlash(fallSource);
したがって、理論的にはすべて正常に動作するはずです (ExternalInterface を正しく理解していれば)。ただし、次のエラーがスローされます。
TypeError: flash.callFlash is not a function
flash.callFlash(fallSource);
問題がどこにあったのかわかりません。私はどんな答えでも、あるいはこれを行うためのまったく異なる方法さえも受け入れます。これがプロジェクトの配信を妨げている限り、それが機能する限り:C
ありがとう!