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(); } |