Вход

Просмотр полной версии : При загрузке swf-файла не работает звук


Danilishin
03.11.2005, 18:05
Ситуация такая:
Есть флешка, файл "mplayer.swf", в котором вставлен звуковой трек, звук проигрывается как положено - создается объект и запускается воспроизведение через метод объекта. В самом начале этой флешки работает прелоадер. Есть управление громкостью ползунком, кнопки включить и выключить. В общем что-то вроде медиа-плеера.
Идем дальше. Есть вторая флешка, тестовая, в которой производится загрузка первой флешки в ролик с помощью такой команды:
loadMovie("mplayer.swf","speaker");
где "speaker" - ролик внутри второй флешки.
Если запускать "mplayer.swf" отдельно, он работает прекрасно, без проблем.
Но вот если запустить второй, тестовый ролик, куда подгружается первый, то исчезает звук. При этом сама флешка загружается нормально, ее кнопки нажимаются, ползунок движется, просто звука нету.
Отчего это могет быть, и как енто устранить?
Спасибо.

Бармалей
03.11.2005, 18:13
возникла проблема с областями видимости.
Убери в загружаемой флешке все ссылки на _root.
При загрузке одной флеш в другую, в загружаемой флехе _root меняется на _root загружающей. Пользуйся относительными путями (на помощь тебе придут this и _parent) =)

Danilishin
03.11.2005, 18:34
Идея хорошая, но я все же не доганяю, вот код:
//--- в файле "mplayer.fla", код в кадре ---
song = new Sound();
song.attachSound("IMC"); // IMC-идентификатор звукового трека
song.start();

//--- в файле "test.fla", код в кадре ---
loadMovie("mplayer.swf","speaker");

по-моему с областью видимости все ок, или я не прав?

CGandA
03.11.2005, 19:01
Поставь _root
_root.loadMovie("mplayer.swf","speaker");
Вроде работает

andr64
03.11.2005, 19:10
может лучше так ?

_root.loadMovie("mplayer.swf");
или
speaker.loadMovie("mplayer.swf");

CGandA
03.11.2005, 19:13
2andre64
Да, ты прав :)
Просто я лишний параметр написал

Danilishin
03.11.2005, 19:16
может лучше так ?

_root.loadMovie("mplayer.swf");
или
speaker.loadMovie("mplayer.swf");


_root.loadMovie("mplayer.swf");
Такая команда просто загружает в флеш-плеер файл mplayer.swf, при этом test.swf минуется. Это все равно что сразу октрыть файл mplayer.swf. Проверял.

speaker.loadMovie("mplayer.swf");
А эта команда идентична команде loadMovie("mplayer.swf","speaker");
Разницы в работе нету. Тоже проверено.

Danilishin
03.11.2005, 19:19
Поставь _root
_root.loadMovie("mplayer.swf","speaker");
Вроде работает

_root.loadMovie("mplayer.swf","speaker");
Эта команда приводит к точно такому же эффекту, как если бы я просто открыл бы файл mplayer.swf.

CGandA
03.11.2005, 19:27
Не понятно, что ты хочешь?

Danilishin
03.11.2005, 19:34
Не понятно, что ты хочешь?
Мне нужно, чтобы в тестовой флешке, например это - оболочка сайта.
На этом сайте в углу тусуется маленький элемент - плеер, который крутит музычку. Этот плеер предусматривается загружаемым флеш-роликом, т.е. сайт в браузере уже загружен, а музыка грузится отдельно, так как для ее загрузки надо время.
При желании изменить музыку мне достаточно заменить mplayer.swf, а не лезть в оболочку - что видится мне очень удобно.
В общем, "медиаплеер" надо чтобы был отдельным подключаемым флешом, и все тут.
Что не понятно?

CGandA
03.11.2005, 20:01
В файл mplayer.fla ты ДОЛЖЕН импортировать свою музыку и прописать имя файла в скрипте
Работает

Danilishin
04.11.2005, 15:14
Спасибо за исходники. Однако проблема здесь не была решена. Дело в том, что в них размеры и цвет фона одинаковы, и не видно как флеш-плеер, при запуске файла test.swf как-бы пропускет его, и загружает mplayer.swf. Суммарный эффект - как если бы мы сразу запустили файл mplayer.swf.
Высылаю обратно исходники с некоторыми изменениями.
В каждом сделан фон разного цвета, а размер mpleer уменьшен. Добавь музыку, скомпилируй и запусти test.swf.

Fj17
03.11.2006, 12:34
всем привет.
вот год спустя
сталкнулся с такой же проблемой:
есть внешний прелоадер, есть загружаемая флэшка с встроенным звуком, в которой прописано:

var firstSound:Sound = new Sound();
firstSound.attachSound("bah");
firstSound.start();

если сразу запустить флэшку, звук проигрывается
если её загрузить через прелоадер, она нормально проигрывается, только без звука. Конфликта имён вроде нет.
Danilishin, нашёл ли ты причину?
Спасибо за внимание!

Danilishin
03.11.2006, 13:20
при создании объекта Sound свяжи его с этим роликом, т.е сделай так:
var firstSound:Sound = new Sound(this);

должно заработать, если что - смотри этот же исходник что год назад, но исправленный.

Fj17
03.11.2006, 13:43
да большое спасибо!
уже нашёл тот же ответ в очень граммотном тутореале
http://kennybellew.cowfly.com/tutorial/