Играем MP3 при загрузке страницы.

Есть некоторое количество способов проиграть MP3 сразу после загрузки. Но каждый из них сводится к вызову внешнего проигрывателя, будь то MediaPlayer, RealPlayer, SilverLight, Flash или что-нибудь еще… Лично я остановился на Adobe Flash. Он установлен на машинах 98% пользователей Интернета и его очень легко использовать. С начала я нашел несколько интересных API для проигрывания музыки во Flash, но с управлением из JavaScript.

Одним из популярнейших проигрывателей является XSPF Web Music Player. Но это не совсем то, что нужно было мне. Во первых, управление находится во Flash, и требует PlayList. Это подходит только для проигрывания песен.

Еще один, это SoundManager. Который помимо основной функции позволяет менять громкость и баланс звучания. Очень прост в использовании, если вам нужно сделать собственные звуки на нажатие кнопок или что-то на подобие еще. Правда есть одно серьезное ограничение, из за которого для меня этот API не подошел. Дело в том, что для начала проигрывания файлов он должен загрузить плеер. Это не позволяет проигрывать музыку в событии onLoad тега BODY.

После своих изысканий я понял, что мне нужен супер простой плеер, который только будет проигрывать музыку без всяких наворотов. Моим решением был следующий код, для MTASC-а:

class Main
{
public static function main():Void
{
var times = _root.times;
if (times == undefined) times = 1;

var sound_mc:MovieClip = _root.createEmptyMovieClip(“sound_mc”, 1);

debug(“”+_root.file);

var s:Sound = new Sound(sound_mc);
sound_mc.onEnterFrame = function() {
if(s.getBytesTotal()>0 && s.getBytesLoaded()==s.getBytesTotal()) {
s.start(0, times);
sound_mc.onEnterFrame = null;
Main.debug(“”+_root.file + ” play times:” + times + ” size:” + s.getBytesTotal());
}
}
s.loadSound(_root.file, false);
}
public static function debug(str:String):Void {
if (_root.debug.length) {
getURL(“javascript:alert(\”+str+\”)”);
}
}
}

Этот код просто получает в качестве параметра файл, который нужно проиграть, мой проигрыватель таким образом весит меньше 2кб. Вот и все.
С учетом использования SWFObject, мой HTML выглядит следущим образом:

<script type=“text/javascript” src=“swfobject.js”></script>
<body>
<div id=“flashcontent”></div>
<script type=“text/javascript”>
var so = new SWFObject(”audioPlayer.swf”, “audioPlayer”, “1″, “1″, “8″, “#FFFFFF”);
so.addParam(”wmode”, “transparent”);
so.addVariable(”file”, “play.mp3″);
so.write(”flashcontent”);
</script>
</body>

Исходной код проекта можно скачать здесь.

Оставить комментарий