Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Включение и выключение звука (http://www.flasher.ru/forum/showthread.php?t=127017)

alexpro 02.07.2009 18:44

Включение и выключение звука
 
Дорогие друзья!

У меня к разным кадрам присвоены разные музыкальные файлы (из библиотеки). При этом проигрывается фоновая музыка из другого клипа (на уровень выше).

Вопрос:
Как сделать так, чтобы при переходе на кадр со звуком, звук из первого кадра отключался, но фоновая музыка не переставала играть?

Пробовал stopAllSounds но тогда и фоновая музыка перестает играть.
А если _this.stopAllSounds то не работает...

Добавлено через 1 минуту
Как присвоить stopAllSounds к определенному кадру?

mooncar 02.07.2009 19:11

Добавлено через 1 минуту
Цитата:

Сообщение от alexpro (Сообщение 832743)
У меня к разным кадрам присвоены разные музыкальные файлы (из библиотеки).

Если понять эту фразу так, что у вас звук в кадре начинает проигрываться не программно, без использования объекта Sound(), а с помощью синхронизации на вкладке фрейма "Properties", то используйте синхронизацию "Stop" для конкретного звука.

alexpro 02.07.2009 19:23

Да, без использования Sound().
Дело в том, что например звук находится в кадре 1 и проигрывается, когда таймлайн находится в этом кадре. Потом я перехожу в кадр 10 gotoAndStop. И в кадре 10 уже вставлен другой звук. Могу ли я использовать синхронизацию Stop в таком случае?

mooncar 02.07.2009 19:37

Можете. Только вам для этого потребуется два слоя ключевых кадров. В основном, старом слое, звуки будут стартованы, а в дополнительных кадрах на тех же позициях таймлайна - "Stop" для предыдущего звучащего.
А лучше всего - забудьте об этом способе и сделайте все по-человечески, через объект Sound(), и тогда все будет работать с помощью кода. Поверьте, час поразбираетесь и всё, и никаких проблем на будущее с количеством звуковых роликов - любой звук можно останавливать/стартовать в произвольный момент времени. Половину приеморв работы со звуком с помощью кода вы освоите за этот час. Тем более тема ваша в ветке Action Script, а изначально у вас о нем очень косвенно.

alexpro 02.07.2009 19:42

Скажите, а как это можно сделать? Или есть ли какой-то пример?

Добавлено через 33 секунды
я имею ввиду через объект Sound()

mooncar 02.07.2009 19:44

1. В библиотеке задайте звукам идентификаторы для звуков, чтобы AS "знал" их.
Для этого щелкните правой кнопкой мыши на звуке в библиотеке, выбирете "Linkage", галочку на "Export for AS" и "Expoert in first frame", а в поле "Identifier" напишите соответственно для каждого звука свой идентификатор, например "fon_id", "zvuk1_id", "zvuk2_id".

2. Потом в начале ролика напишите такой код:
Код AS1/AS2:

this.createEmptyMovieClip("sound1_mc", this.getNextHighestDepth()); 
this.createEmptyMovieClip("sound2_mc", this.getNextHighestDepth());
this.createEmptyMovieClip("sound3_mc", this.getNextHighestDepth());
 
var zvuk_fon:Sound = new Sound(sound1_mc);
zvuk_fon.attachSound("fon_id");
 
var zvuk1:Sound = new Sound(sound2_mc);
zvuk1.attachSound("zvuk1_id");
 
var zvuk2:Sound = new Sound(sound3_mc);
zvuk2.attachSound("zvuk2_id");

Тут же в первом кадре стартуете фоновый звук:
Код AS1/AS2:

zvuk_fon.start();

3. В нужном кадре стартуете звук 1:
Код AS1/AS2:

zvuk1.start();

В другом его останавливаете и стартуете другой звук:
Код AS1/AS2:

zvuk1.stop();
zvuk2.start();

И т.д.

Теперь также можно менять громкость с помощью метода setVolume, и еще много чего делать.. почитайте о Sound() в хелпе.

alexpro 02.07.2009 20:54

Большое спасибо Mooncar! Все работает супер! :)

mooncar 02.07.2009 21:11

Ага.. я свой первый проект флешевский тоже мучал с использованием звука в кадрах.. но к счастью, быстро понял, если нужно гибко управлять звуком, то именно через Sound().

inco_nj 02.02.2010 15:07

А подскажите, плз, как зациклить проигрывание трека?

mooncar 02.02.2010 15:15

Код AS1/AS2:

this.createEmptyMovieClip ('bgs_mc', this.getNextHighestDepth()); 
 
var bgs:Sound = new Sound (bgs_mc);
bgs.attachSound('bgs_id');
bgs.onSoundComplete =  startBgSound; //строка, назначающая зацикливание
 
startBgSound (); //начальный старт
 
function  startBgSound () {
  bgs.play();
}



Часовой пояс GMT +4, время: 13:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.