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

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

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

Регистрация: Apr 2012
Сообщений: 8
По умолчанию Многократное воспроизведение звука и остановка

Доброго времени суток.
Есть короткая мелодия, которая при нажатии кнопки начинает проигрываться до тех пор (или очень долго), пока второй раз не нажать эту кнопку.
Кривым языком начинающего (у меня) это должно выглядеть так
Код AS3:
btn.addEventListener(MouseEvent.CLICK, playsound);
function playsound(e:MouseEvent):void { 
 
	if(temp==1)
{	sound.stop(0,3000);
        temp=0;
}else{
	sound.play(0,3000);
	temp=1;
}
}
Но так оно естественно не работает Подскажите, как сделать такое действие. пробовал создавать и удалять листенеры с функцией многократного воспроизведения, но тоже к успеху не пришел

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

Регистрация: Mar 2010
Сообщений: 48
не совсем правильно понимаете как работает Sound, SoundChannel.
рекомендую почитать документацию
http://help.adobe.com/ru_RU/FlashPla...nd.html#play()

Код AS3:
//var sound:Sound; звук, который надо воспроизводить
 
btn.addEventListener( MouseEvent.CLICK, toggleSound );
var soundChannel:SoundChannel = null;
 
function toggleSound( e:MouseEvent = null ):void { 
	if( soundChannel ) {
		soundChannel.stop();
		soundChannel = null;
	} else {
		soundChannel = sound.play( 0, 3000 );
	}
}

Старый 24.04.2012, 20:32
Vasil вне форума Посмотреть профиль Отправить личное сообщение для Vasil Найти все сообщения от Vasil
  № 3  
Ответить с цитированием
Vasil

Регистрация: Apr 2012
Сообщений: 8
Спасибо, работает
таким способом нельзя сделать воспроизведение сразу двух звуков или я не правильно понял?

Старый 24.04.2012, 20:38
bublic_bicubic вне форума Посмотреть профиль Отправить личное сообщение для bublic_bicubic Найти все сообщения от bublic_bicubic
  № 4  
Ответить с цитированием
bublic_bicubic
 
Аватар для bublic_bicubic

Регистрация: Mar 2010
Сообщений: 48
можно.
для каждого звука свой SoundChannel

Старый 24.04.2012, 21:01
Vasil вне форума Посмотреть профиль Отправить личное сообщение для Vasil Найти все сообщения от Vasil
  № 5  
Ответить с цитированием
Vasil

Регистрация: Apr 2012
Сообщений: 8
так почему то не получается...
Код AS3:
btn.addEventListener(MouseEvent.CLICK, playsound);
var soundChannel1:SoundChannel = null;
var soundChannel2:SoundChannel = null;
function playsound(e:MouseEvent):void { 
 
	if(temp==1)
{	soundChannel1.stop();
	soundChannel1 = null;
        soundChannel2 = sound2.play( 0, 3000 );
        temp=0;
}else{
	soundChannel2.stop();
	soundChannel2 = null;
        soundChannel1 = sound1.play( 0, 3000 );
	temp=1;
}
}
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
если же после else будет
Код AS3:
 
soundChannel1 = sound1.play( 0, 3000 );
soundChannel2.stop();
soundChannel2 = null;
то работать будет только один звук и выключить его не удастся
если же воспроизведение засунуть в одни скобки, а стоп в другие, то работают вместе и отключаются тоже


Последний раз редактировалось Vasil; 24.04.2012 в 21:09. Причина: дополнение, исправление ошибок
Старый 25.04.2012, 11:38
bublic_bicubic вне форума Посмотреть профиль Отправить личное сообщение для bublic_bicubic Найти все сообщения от bublic_bicubic
  № 6  
Ответить с цитированием
bublic_bicubic
 
Аватар для bublic_bicubic

Регистрация: Mar 2010
Сообщений: 48
не могу понять какое поведение требуется. нужно чтобы оба звука одновременно включались и выключались или попеременно?

Старый 25.04.2012, 16:55
Vasil вне форума Посмотреть профиль Отправить личное сообщение для Vasil Найти все сообщения от Vasil
  № 7  
Ответить с цитированием
Vasil

Регистрация: Apr 2012
Сообщений: 8
попеременно. при нечетном нажатии включается sound1, при четном sound2

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

Регистрация: Mar 2010
Сообщений: 48
Тогда в вашем коде при первом запуске функции playsound произойдет ошибка. Нужно либо при первом запуске обработать это, либо включать один из звуков в начале работы приложения.

В данном случае нужен один SoundChannel (так как звук проигрывается только один)
Код AS3:
//var sound1:Sound, sound2:Sound; звуки, которые надо воспроизводить
 
btn.addEventListener( MouseEvent.CLICK, toggleSound );
var soundChannel:SoundChannel = null; // канал, изначально звук не проигрывается
var currentSound:Sound = null; // текущий звук, изначально не задан
 
function toggleSound( e:MouseEvent = null ):void { 
	switch ( currentSound ) {
		case null: // если звук еще не проигрывается, выбираем первый звук
		case sound2: // если проигрывается второй звук, выбираем первый звук
			currentSound = sound1;
			break;
		case sound1: // если проигрывается первый звук, выбираем второй звук
			currentSound = sound2
			break;
	}
	if ( soundChannel ) { // если сейчас проигрывается звук, останавливаем его
		soundChannel.stop();
	}
	soundChannel = currentSound.play( 0, 3000 ); // включаем проигрывание нового звука
}

Старый 25.04.2012, 18:12
Vasil вне форума Посмотреть профиль Отправить личное сообщение для Vasil Найти все сообщения от Vasil
  № 9  
Ответить с цитированием
Vasil

Регистрация: Apr 2012
Сообщений: 8
спасибо Вам огромное очень помогли

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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