Идет такой код, для вывода сообщения включить звук или выключить:
var soundManager = SoundManager.getInstance(); // в Safari всегда undefined
if(soundManager.isSupported())
{
soundManager.setSounds(settings.soundsInfo);
soundManager.addEventListener(SoundManager.SOUND_LOADED, onSoundLoaded, this);
this._soundPopUp = new PopUp("Play Sounds?", "", "Yes", "No");
this._soundPopUp.addEventListener(PopUp.BUTTON1_CLICK, onLoadSounds, this);
this._soundPopUp.addEventListener(PopUp.BUTTON2_CLICK, onCancelSounds, this);
this._soundPopUp.setButtonIds("SoundPopUpYesButton", "SoundPopUpNoButton");
}
if(this._soundPopUp)
{
this._view.addChild(this._soundPopUp);
}
Это код из библиотеки:
EventDispatcher
(
"SoundManager",
{
SOUND_LOADED: "soundLoaded",
_instance: null,
getInstance: function()
{
SoundManager._instance || (SoundManager._instance = new SoundManager);
return SoundManager._instance
}
},
function()
{
function c(a)
{
a.target.removeEventListener(LoaderEvent.COMPLETE, c, this);
a.target.removeEventListener(LoaderEvent.ERROR, b, this);
var d = a.target.index;
console.log(this._soundSources[d] + " loaded!");
this._soundBuffers[d] = a.data;
this.dispatchEvent(new Event(SoundManager.SOUND_LOADED, {
soundIndex: a.target.index
}))
}
function b(a)
{
a.target.removeEventListener(LoaderEvent.COMPLETE, c, this);
a.target.removeEventListener(LoaderEvent.ERROR, b, this);
console.log("Loading " + this._soundSources[index] + " failed!")
}
return
{
init: function()
{
this._masterGain = this._context = null;
this._soundSources = [];
this._sounds = {};
this._soundBuffers = [];
this._mute = !0;
this._super();
window.AudioContext = window.AudioContext || window.webkitAudioContext;
if (window.AudioContext && !this._context)
{
this._context = new AudioContext;
this._context.createGainNode || (this._context.createGainNode = this._context.createGain);
var a = this._context.createBufferSource();
a.noteGrainOn || a.start || this._context.createGainNode || (this._context = null)
}
this._context && (this._masterGain = this._context.createGainNode(), this._masterGain.connect(this._context.destination), this._masterGain.gain.value = 1)
},
isSupported: function()
{
return this._context ? !0 : !1
},
getContext: function()
{
return this._context
},
playDummySound: function(a)
{
if (this._context) {
var b = this._context.createBufferSource();
b.buffer = a;
b.connect(this._context.destination);
b.noteGrainOn || (b.noteGrainOn = b.start);
b.noteGrainOn(0, 0, 1)
}
},
setSounds: function(a)
{
if (!(0 == a.length || 0 < this._soundSources.length))
for (var b = a.length, c = 0; c < b; c++) {
this._soundSources[c] = a[c].src;
for (var e = a[c].sounds, h = e.length, f = 0; f < h; f++) {
var k = e[f];
this._sounds[k.name] = {
start: k.start,
duration: k.duration,
soundIndex: c
}
}
}
},
hasSound: function(a)
{
return this._sounds[a] && this._soundBuffers[this._sounds[a].soundIndex] ? !0 : !1
},
load: function(a)
{
if (this._context &&
void 0 == this._soundBuffers[a]) {
this._soundBuffers[a] = null;
var d = new SoundLoader(this._soundSources[a]);
d.index = a;
d.addEventListener(LoaderEvent.COMPLETE, c, this);
d.addEventListener(LoaderEvent.ERROR, b, this);
d.load()
}
},
loadAll: function()
{
for (var a = this._soundSources.length, b = 0; b < a; b++) this.load(b)
},
areSoundsLoaded: function()
{
for (var a = this._soundSources.length, b = 0; b < a; b++)
if (!this._soundBuffers[b]) return !1;
return !0
},
getSoundLength: function(a)
{
return a && this._context && this._sounds[a] && this._soundBuffers[this._sounds[a].soundIndex] ?
(a = this._sounds[a]) && this._soundBuffers[a.soundIndex] ? a.duration : -1 : -1
},
play: function(a, b, c)
{
if (!(a && this._context && this._sounds[a] && this._soundBuffers[this._sounds[a].soundIndex])) return c && !b && setTimeout(function() {
c()
}, 0), null;
var e = this._sounds[a];
console.log("Play " + a);
a = this._context.createBufferSource();
a.buffer = this._soundBuffers[e.soundIndex];
a.volume = this._context.createGainNode();
a.connect(a.volume);
a.volume.connect(this._masterGain);
if (c && !b) {
var h = setTimeout(function() {
c()
}, 1E3 * e.duration);
a.soundEndTimer = h
}
b && (a.loop = b, a.loopStart = e.start, a.loopEnd = e.start + e.duration);
a.noteGrainOn || (a.noteGrainOn = a.start);
b && Device.isChrome && Device.isAndroid ? a.noteGrainOn(0, e.start) : a.noteGrainOn(0, e.start, e.duration);
return a
},
stop: function(a)
{
if (!a) return null;
a.soundEndTimer && clearTimeout(a.soundEndTimer);
try {
a.stop(0)
} catch (b) {}
return null
},
toggleMute: function()
{
this._context && (this._mute = !this._mute, this._masterGain.gain.value = this._mute ? 0 : 1)
},
isMuted: function()
{
return this._mute
}
}
}
()
);
Ошибок в консоли нет, но сообщения тоже нет, подскажите почему в сафари скрипт не срабатывает.
UPD Народ разобраться самому не получается, подскажите...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется код, который получает json при помощи XMLHttpRequestПолученные данные сохраняются в переменную loadedData при вызове соответствующего слушателя
Есть у меня HTML страница, к которой подключен js-код как внутренний, так и внешний