|

TIPS OF FLASH: - MP3 плеер в одну строку
Iv (dembicki@narod.ru)
Спецвыпуск Xakep, номер #029, стр. 029-112-1
Интернет сейчас, как немое кино в начале прошлого века. Некоторые сайты озвучены фоновой музыкой, а на особо продвинутых можно выбрать одну из 3-4 мелодий. Но можно ворчать, а можно юзать то, что доступно сейчас. Мы с тобой, например, сделаем сегодня MP3 плеер с возможностью выбора пользователем полюбившегося ему трека. Также дадим возможность юзеру посмотреть инфу по песне. Причем при помощи этого энджина а) элементарно добавить новую mp3'шку на сайт, не меняя мувика и б) можно слушать музыку почти сразу, не дожидаясь загрузки mp3.
TIPS 1. XML-описание
Если нужно передавать во Flash параметры извне, юзь XML - он крут. Сделаем XML с описанием песен и положим несколько MP3 в папку music. Вот какой playlist.xml вышел у меня:
<playlist>
<item url="blamme.mp3"
songName="blamme"
artist="strekachi"
album="Full charge 2000"
genre="drum-n-bas"
comment="это кульная песня!"
duration="189649"/>
<item url="fuzz_fucking.mp3"
songName="fuzz fucking"
artist="prodigi"
album="nope "
genre="nope "
comment="это же продиги"
duration="201326"/>
<item url="track1.mp3"
songName="X-item"
artist="XX"
album="xxx "
genre="sample "
comment="это сэмпл"
duration="8333"/>
</playlist>
TIPS 2
Я не стал полагаться на получение стандартных тегов из MP3, а описал свои в XML. Гораздо удобнее писать в своем XML, что в голову взбредет, чем париться исправлять теги в MP3. Тем более, что XML нас ничем не ограничивает в смысле количества атрибутов и их наполнения. И к тому же эти данные мы можем получить, не загружая MP3 файлы.
TIPS 3. Подготовительный этап
FLA сохраним в той же папке, что и XML. Кодим в первом кадре рута. Этаж привесим в левый верхний угол и запретим масштабироваться:
Stage.align = "TL";
Stage.scaleMode = "noscale";
Сделаем настройки для XML - берем текущую кодовую страницу и игнорируем пробелы во всех XML документах:
System.useCodePage = true;
XML.prototype.ignoreWhite = true;
Раз есть XML, снова юзаем мою любимую функцию для обхода дерева:
// (c) Ivan Dembicki, dembicki@narod.ru
XMLNode.prototype.nextNode = function() {
if (this.firstChild != null) {
return this.firstChild;
}
var n = this;
while (n.nextSibling == null) {
if (n.parentNode) {
n = n.parentNode;
} else {
return null;
}
}
return n.nextSibling;
};
Подготовка закончена.
TIPS 4. Загрузка и обработка XML
Создадим объект XML и грузанем в него наш XML документ, и сразу после загрузки расставим ID узлам XML. Затем определим, если проект запущен локально (т.е. URL начинается с "file:///"), то вызываем функцию вывода на экран значений продолжительности звучания всех роликов. После этого инициализируем наш MP3 плеер.
input_xml = new XML();
input_xml.load("playlist.xml");
this.input_xml.onLoad = function(success) {
if (success) {
if (this.status != 0) {
trace("invalid xml");
} else {
var i = 0;
var nod = this.firstChild;
while (nod) {
nod.attributes.ID = i++;
nod = nod.nextNode();
}
this.parseXML(this.firstChild);
if (_url.substring(0, 8) == "file:///") {
_root.getDurations();
}
Содержание Вперед на стр. 029-112-2
|