Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.04.2010, 05:32
Maxish вне форума Посмотреть профиль Отправить личное сообщение для Maxish Найти все сообщения от Maxish
  № 1  
Ответить с цитированием
Maxish

Регистрация: Aug 2008
Сообщений: 27
Melody Воспроизведение звука при наведении на клип

Доброго времени суток!
Искал решения конкретно под свою проблему - не нашел.

А проблема заключается в следующем:
есть ряд кнопок(мувиклипы) - пунктов мею, которые при наведении onRollOver производятся в одном напрвлении, при onRollOut - обратно.
Реализвано это благодаря обработчику onEnterFrame
Код AS1/AS2:
 info_btn.onRollOver = function() { mouse_over_info = true; };
  info_btn.onRollOut = function()  { mouse_over_info = false; };
 
  info_btn.onEnterFrame = function() {
   if (mouse_over_info) { info_btn.nextFrame();
    }else { info_btn.prevFrame(); }
   };
Все работает. Но есть одно "но". Как сделать однократное воспроизведение звука при наведении? Т.е. как обойти onEnterFrame, ведь из-за него звук воспроизводится каждую секунду наведения? Спасибо.

Старый 23.04.2010, 06:19
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 2  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Уберите звук с таймлайна. Создавайте его программно и включайте в функции onRollOver
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 23.04.2010, 13:57
Maxish вне форума Посмотреть профиль Отправить личное сообщение для Maxish Найти все сообщения от Maxish
  № 3  
Ответить с цитированием
Maxish

Регистрация: Aug 2008
Сообщений: 27
Насколько я Вас понял:
Код AS1/AS2:
var switch:Sound = new Sound();
switch.attachSound("zing.mp3");
 
aboutCompany_btn.onEnterFrame = function() {
	if (mouse_over_about) { aboutCompany_btn.nextFrame();
	zing.start();
	}else { aboutCompany_btn.prevFrame(); 
	//zing.stop(); - не принципиальный момент
	}
};
Но ведь это абсолютно не меняет дело... Опять ежетактное проигрывание.

Старый 23.04.2010, 14:00
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 4  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Код AS1/AS2:
 var switch:Sound = new Sound();
switch.attachSound("zing.mp3");
info_btn.onRollOver = function() { switch.start() };
info_btn.onRollOut = function()  { switch.stop() };
а вот так н еподойдет?

Старый 23.04.2010, 14:18
Maxish вне форума Посмотреть профиль Отправить личное сообщение для Maxish Найти все сообщения от Maxish
  № 5  
Ответить с цитированием
Maxish

Регистрация: Aug 2008
Сообщений: 27
Нет. потому что на onRollOver и onRollOut прописаны другие ф-ии (см. выше)

Старый 23.04.2010, 14:34
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 6  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
а что мешает сделать так
Код AS1/AS2:
var switch:Sound = new Sound();
switch.attachSound("zing.mp3");
info_btn.onRollOver = function() { 
switch.start()
mouse_over_info = true; 
};
info_btn.onRollOut = function()  { 
switch.stop() 
mouse_over_info = false;
};

Старый 23.04.2010, 15:04
Maxish вне форума Посмотреть профиль Отправить личное сообщение для Maxish Найти все сообщения от Maxish
  № 7  
Ответить с цитированием
Maxish

Регистрация: Aug 2008
Сообщений: 27
Спасибо огромное! Вам - большой плюс в карму!))) Все работает.
Интересно, когда я уже исчерпаю свою плосколобость?

Тему можно закрывать.

Старый 23.04.2010, 21:47
studmar вне форума Посмотреть профиль Отправить личное сообщение для studmar Найти все сообщения от studmar
  № 8  
Ответить с цитированием
studmar
 
Аватар для studmar

Регистрация: Apr 2010
Сообщений: 81
У меня такой вопрос (очень схожий)
Я воспользовался вашим кодом
Код AS1/AS2:
var muz:Sound = new Sound();
switch1.loadSound("some.mp3", false);
 
btn.onRollOver = function () { 
switch1.start();
mouse_over_info = true; 
};
btn.onRollOut = function ()  { 
switch1.stop(); 
mouse_over_info = false;
};
Все работает правильно, т.е. при наведении на MovieClip начинает воспроизводится музыка, если отвести мышку - музыка пропадает. Но вот хотелось бы чтобы она не обрывалась, а постепенно затухала (fadeout) это как минимум, а как максимум имела бы еще и fadein
Вот тут обсуждалось нечто схожее http://www.flasher.ru/forum/showthread.php?t=136370
но совместить у меня не получается ибо мои познания в AS слабоваты.
Прошу помощи, заранее спасибо )
Вложения
Тип файла: rar muz.rar (189.8 Кб, 150 просмотров)


Последний раз редактировалось studmar; 24.04.2010 в 04:03.
Старый 24.04.2010, 04:33
studmar вне форума Посмотреть профиль Отправить личное сообщение для studmar Найти все сообщения от studmar
  № 9  
Ответить с цитированием
studmar
 
Аватар для studmar

Регистрация: Apr 2010
Сообщений: 81
Покапался по иностранным сайтам и в итоге "слепил" из того, что уже было конструкцию (скорее всего неправильную, ибо я не программист, а дизайнер), но рабочую.
Источник "второго" куска кода здесь

Код AS1/AS2:
var muz:Sound = new Sound(); 
muz.loadSound("test2.mp3", false); //подгружаем mp3 из "внешнего" источника
 
btn.onRollOver = function () { //для movieclip с именем btn при наведении мышки
muz.start();  //воспроизводим музон
muz.setVolume(100); //устанавливаем громкость, это по желанию
};
 
btn.onRollOut = fadeOutSound; // вот тут самое такое, как я понимаю при отводе мышки вызывается функция, которая сначала уменьшает громкость а потом выключает музон
 
function fadeOutSound():Void {
    if (id) {
        clearInterval(id);
    }
    var volume = muz.getVolume();
    id = setInterval(fadeOut, 10);
    function fadeOut():Void {
        muz.setVolume(volume--);
        if (volume<=0) {
            clearInterval(id);
            muz.stop();
        }
    }
}
Теперь все выглядит так: при наведении мышки на movieclip "btn" воспроизводится файл, при отводе плавно затихает. Если навести мышку снова - все повторится сначала, а было бы интересно сделать так, чтобы проигрывалось с того самого места, когда мышку убрали... может кто знает как этого добится?

Так же можно заморочиться и сделать еще fade in для звук

test2.rar

Старый 24.04.2010, 09:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от studmar Посмотреть сообщение
было бы интересно сделать так, чтобы проигрывалось с того самого места, когда мышку убрали...
Ставьте звук на паузу вместо stop() .
Для этого перед остановкой можно запомнить позицию (Sound.position property). И запускать уже с нужной позиции.
Только следует учесть, что position берется в миллисекундах, а офсет в start() выставляется в секундах, так что округляйте.


Последний раз редактировалось mooncar; 24.04.2010 в 09:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
onEnterFrame , onRollOver , звук

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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