【发布时间】:2014-07-04 14:17:22
【问题描述】:
我正在制作一个基于 HTML 的 Adobe AIR 应用程序,我想在用户将鼠标悬停在链接上时播放哔声。 mouseenter 事件由 jQuery 处理,然后调用一个函数。对于 Web,它使用 Web Audio API(由 Howl.js 提供支持),但由于 AIR 不支持该 API,我回退到使用 Flash API。
到目前为止我所拥有的是:
// if Adobe AIR
if (window.runtime){
var myChannel = new window.runtime.flash.media.SoundChannel();
var beep;
$('ul.menu a').on('mouseenter', function(){
// stop all sounds... (should I be stopping all sounds though?)
window.runtime.flash.media.SoundMixer.stopAll();
// set beep as a new sound
beep = new window.runtime.flash.media.Sound();
// load mp3
beep.load(new URLRequest('./assets/beep.mp3'));
// once file has loaded
beep.addEventListener(air.Event.COMPLETE, function(){
myChannel = beep.play();
});
});
// we're running in the browser
} else {
var sound = new Howl({
urls: ['./assets/beep.mp3', './assets/beep.ogg']
});
$('ul.menu a').on('mouseenter', function(){
sound.play();
});
}
但它不起作用......我做错了什么?
【问题讨论】:
-
这段代码是js还是as3?看起来您正试图在浏览器中直接运行 as3 代码
-
不,ActionScript 部分不在浏览器中运行!它在 Adobe AIR 中运行。您可以在 AIR HTML 应用程序中混合使用 ActionScript 和 JavaScript……但我想我需要在它们前面加上
window.runtime.flash……但不确定事件。 -
不需要用 () 调用构造函数吗?喜欢:
var myChannel:SoundChannel = new SoundChannel();
标签: javascript jquery actionscript-3 flash air