PERMANENT STORAGE を使用して、ユーザーのローカル ファイルシステムで HTML5 Filesystem API を使用して mp3 を書き込もうとしています。イベントが dataTransfer.files をトリガーするドラッグ アンド ドロップ領域があります。しかし、SoundManager 2 でファイルをロードしてブラウザで mp3 を再生するにはどうすればよいですか?
Soundmanager は createSound への引数としてパスを必要とします:
url: [
{type:'audio/mp3',url:'/path/to/play.php?song=123'}
]
Filesystem API を使用して正常に読み取ったファイルへのパスは何ですか?
以下が正常に実行されます。
var files = evt.dataTransfer.files; // FileList object.
// files is a FileList of File objects. List some properties.
//var output = [];
for (var i = 0, f; f = files[i]; i++) {
audio.playlist.push(escape(f.name)); // saving filenames in array for playlist
writeFile(fs.root,files[i]);
}
for (var i = 0, f; f = files[i]; i++) {
fs.root.getFile(escape(files[i].name), {create: false}, function(fileEntry) {
alert('A file ' + fileEntry.name + ' was read successfully.');
}, errorHandler);
}
後でSoundmanager 2を呼び出します(相対ファイルパスを渡した場合にのみ機能します)-
audio.nowPlaying = soundManager.createSound({
id: 'aSound',
url: audio.playlist[playlistId],
autoLoad: true,
volume: 20,
// ...with a recursive callback when play completes
onfinish: function(){
playlistId ++;
playAudio(playlistId);
}
})