Современные проекты всё больше и больше персонализируются. Один из последних проектов предполагал постоянное присутствие пользователя на сайте. Пользователь является диспетчером и отслеживает появление новых заказов, участвует в аукционах итп. Помимо уже стандартных SMS уведомлений итп, хотелось сделать звук, т.к. пользователи действительно постоянно находятся на проекте. Самым простым способом показался флеш. Флеш уже есть почти у всех, все смотрят ютуб, играют в фермера и так далее. И не смотря на мои антифлешевские взгляды, решил что для проигрывания звука флеш подходит лучше всего.
Однако при попытке написать флешку для проигрывания звуков я вдруг вспомнил, что не работал с флешем уже лет 5 =( и вместо того, чтобы написать свой компонент, стал искать готовые…
Почти сразу я нашел статью «Управляем Flash-объектом на Javascript», где apelsyn достаточно наглядно показывал как строить интерфейсы между JS и Flash как раз на примере подобного мини проигрывателя звуков, мелодий итп. Со времен моего изучения флеша многое изменилось. Action Script из примитивного языка макросов превратился в мощный скриптовой язык. И не смотря на то, что apelsyn достаточно подробно разжевал как и что и даже выложил исходники, повторить его опыт в среде Flash CS4 я не смог =( Решил использовать его SWF без своих правок, однако и тут меня ждала засада. Путь до директории с рингтонами apelsyn прописал в коде и что самое ужасное — он относительный. В итоге на главной странице его флешка без проблем воспроизводила звук, но стоило зайти по глубже на сайт, флешка выплёвывала ошибку.
На тот момент идея «прикрутить звук за 5 минут» реализовывалась уже несколько часов. Очень хотелось получить звук, однако чувствовал себя роботом, потерявшим ориентацию и бьющимся об стену. С одной стороны бизнесмен внутри меня говорил «Забей и делай дальше, в крайнем случаем закажешь на free-lance.ru», но программист не уставал повторять «Ну ты и ламер, флешку для проигрывания звука написать не можешь».
В итоге я окончательно разозлился, открыл новый flash проект и таки написал этот проигрыватель, причем чёрт действительно оказался не таким страшным. При всём уважении к apelsyn, код получился раз в 10 меньше и он работал, что главное.
Flash файл:
и JS код:
Соответственно, для работы скрипта надо подключить swfobject.js, юзать примерно так:
Вот вроде и всё =)
p.s. я не претендую на звание гуру флеша, наоборот, буду рад любой критике и исправлю все неточности в коде.
Однако при попытке написать флешку для проигрывания звуков я вдруг вспомнил, что не работал с флешем уже лет 5 =( и вместо того, чтобы написать свой компонент, стал искать готовые…
Почти сразу я нашел статью «Управляем Flash-объектом на Javascript», где apelsyn достаточно наглядно показывал как строить интерфейсы между JS и Flash как раз на примере подобного мини проигрывателя звуков, мелодий итп. Со времен моего изучения флеша многое изменилось. Action Script из примитивного языка макросов превратился в мощный скриптовой язык. И не смотря на то, что apelsyn достаточно подробно разжевал как и что и даже выложил исходники, повторить его опыт в среде Flash CS4 я не смог =( Решил использовать его SWF без своих правок, однако и тут меня ждала засада. Путь до директории с рингтонами apelsyn прописал в коде и что самое ужасное — он относительный. В итоге на главной странице его флешка без проблем воспроизводила звук, но стоило зайти по глубже на сайт, флешка выплёвывала ошибку.
На тот момент идея «прикрутить звук за 5 минут» реализовывалась уже несколько часов. Очень хотелось получить звук, однако чувствовал себя роботом, потерявшим ориентацию и бьющимся об стену. С одной стороны бизнесмен внутри меня говорил «Забей и делай дальше, в крайнем случаем закажешь на free-lance.ru», но программист не уставал повторять «Ну ты и ламер, флешку для проигрывания звука написать не можешь».
В итоге я окончательно разозлился, открыл новый flash проект и таки написал этот проигрыватель, причем чёрт действительно оказался не таким страшным. При всём уважении к apelsyn, код получился раз в 10 меньше и он работал, что главное.
Flash файл:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("playMusic", playMusic);
ExternalInterface.addCallback("stopMusic", stopMusic);
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
var _sound:Sound;
var _channel:SoundChannel;
function playMusic(file:String='', count:int=0)
{
_sound = new Sound(new URLRequest(file));
_channel=_sound.play(0,count);
}
function stopMusic() {
_channel.stop();
}
* This source code was highlighted with Source Code Highlighter.
и JS код:
function musicLoad()
{
swfobject.embedSWF("/swf/music.swf", "sound", "0", "0", "9.0.0");
}
function musicPlay (file, count)
{
if (!file)
{
file='/sound/default.mp3';
}
if (!count)
{
count=1;
}
document.getElementById('sound').playMusic(file, count);
}
function musicStop ()
{
document.getElementById('sound').stopMusic();
}
* This source code was highlighted with Source Code Highlighter.
Соответственно, для работы скрипта надо подключить swfobject.js, юзать примерно так:
musicPlay('/sound/123.mp3');
musicStop();
* This source code was highlighted with Source Code Highlighter.
Вот вроде и всё =)
p.s. я не претендую на звание гуру флеша, наоборот, буду рад любой критике и исправлю все неточности в коде.