0

我知道已经有很多关于这个话题的问题,但没有一个能解决我的问题,也许我只是错过了一些东西。

无论如何,这是交易。我有一个快乐的 html5 小游戏,它可以播放一些音频和声音效果等,它在每个支持 html5 的浏览器中都运行良好。但是,那些不需要闪退的。没什么大不了的吧?显然不是……我制作了一个小的 swf,它应该接受来自 JS 的 mp3 url,然后获取 mp3 并播放它。我必须使用这种方式,因为有很多音频文件,我想尽量避免为每个文件制作一个 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

谢谢!

4

1 回答 1

1

我知道这真的很老了,但我从来没有成功地用 jquery 正确找到我的 flash 对象。最好使用 getElementById。此外,就在几个月前,我在一些现代浏览器中遇到的另一件疯狂的事情是,在通过 ExternalInterface 初始化任何回调之后,我实际上需要告诉 flash 等待一帧。

于 2015-03-29T22:42:02.783 回答