Я создаю простой музыкальный автомат Javascript с использованием новейшего SoundManager2 для воспроизведения аудио, источником которого являются локальные файлы MP3. У меня загрузка файлов и воспроизведение отсортированы, и в данный момент я пытаюсь получить доступ к информации ID3 этих файлов MP3, но обратный вызов onid3 () не запускается. Я использую Flash и проверил, что информация ID3 присутствует в файлах. Ниже моя реализация onid3 ():
function playNextSongInQueue()
{
// Get the first element of the songQueue array
var nextSongInQueue = songQueue.shift();
// Start playback from the queue
var jukeboxTune = soundManager.createSound({
id: 'currentTune',
url: 'audio/' + nextSongInQueue.name,
onload: function() {
this.play();
},
onid3: function() {
alert('ID3 present!');
},
onfinish: function() {
this.destruct(); // Destroy this sound on finish
songFinish(); // Run the songFinish() function, so decide what to do next
}
});
jukeboxTune.load();
//jukeboxTune.play(); // The jukebox running!
songPlaying = true; // Set songPlaying flag
updateSongQueueDisplay(); // Refresh the song queue display (for debug)
return nextSongInQueue.name;
}
Другие обратные вызовы работают нормально, но предупреждение onid3 () никогда не появляется. Я даже разделил загрузку и воспроизведение частей аудио, чтобы посмотреть, помогло ли это. SoundManager обнаруживает, что onid3 () присутствует, потому что он переключает usePolicyFile в true - поскольку MP3-файлы локальны, я полагаю, мне не нужно беспокоиться о междоменном XML-файле.
Кто-нибудь может пролить свет на то, почему это не работает? Я искал Google в поисках реализаций, которые работают, но не нашли ничего полезного. Я видел чистый обходной путь Javascript от Jacob Seidelin, но предпочел бы придерживаться SoundManager, если это возможно, и предпочел бы не использовать решение PHP.
Спасибо
Адам