WEBブラウザで音楽再生_05

Last-modified: 2014-08-16 (土) 12:41:50 (1987d)

Flashを使いプレイヤーを作成する

WMPプラグインで音楽プレイヤーを作ったところ、あまりにもひどい音だったためFlashでもプレイヤーを作ってみることにした。ついでに様々なブラウザで動けばいいな…という期待を含めつつ。

結局、WMPより音が悪い気がする……orz

player_flash.png
動作サンプル
music: carm (c)2006

部分プレイリストを作成する

部分プレイリストはxmlで生成すると楽でしょう。こんな感じになります。

<?xml version="1.0" encoding="UTF-8"?>
<songlist>
<item title="any" album="carm - one">http://ytyng.com/samples/htjuke_flash/carm_0101_any.mp3</item>
<item title="genkou" album="carm - one">http://ytyng.com/samples/htjuke_flash/carm_0102_genkou.mp3</item>
<item title="confidence_man" album="carm - one">http://ytyng.com/samples/htjuke_flash/carm_0103_confidence_man.mp3</item>
<item title="one" album="carm - one">http://ytyng.com/samples/htjuke_flash/carm_0104_one.mp3</item>
</songlist>

私の所持しているFlashはMXのため、どうやらID3タグの読み込みが出来ない模様。そのため、アルバム名はディレクトリ名を参照し、曲名はファイル名を参照しました。

アルバム名と曲名にそれぞれXMLタグを割り当てても良いのですが、タグのプロパティとして読み込んだ方がアクセスしやすいと思います。

Flashでプレイリストを読み込む

例えばこんな感じになります。

1フレーム目

var arySonglist = new Array();
var xmlSonglist = new XML();
var songNum = 0;

xmlSonglist.ignoreWhite = true;

xmlSonglist.onLoad = function(){
	arySonglist = this.firstChild.childNodes;
	gotoAndPlay(2);
}
xmlSonglist.load("list.xml?"+new Date().getTime());

WMPプラグインを使った時と同様、プレイリストファイルを取得する際に無用なクエリを渡してキャッシュから読み出すことを防いでいます。本来ならheaderを使うべきですが。

2フレーム目

var sndSong = new sound();
sndSong.loadSound(arySongList[songNum].firstChild,true);

txtSongname = arySongList[songNum].attributes.title;
txtAlbum = arySongList[songNum].attributes.album;