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

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

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

Регистрация: Nov 2007
Сообщений: 61
По умолчанию Проигрывание мелодий по списку

Привет!
В добавок к визуализатору захотелось, чтобы мелодии из списка автоматически проигрывались по очереди. Самостоятельно я смог сделать лишь, чтобы мелодия менялась по нажатию кнопки, но вот автоматизировать не получилось. Помогите, а то два дня уже бьюсь.



Код AS3:
var song:Array = new Array;
song[0] = "song0.mp3";
song[1] = "song1.mp3";
song[2] = "song2.mp3";
 
var newChannel:Array = new Array (song.length);
var num:int = 0;
var snd:Sound = new Sound(new URLRequest(song[num]));
var channel:SoundChannel = new SoundChannel();
 
channel = snd.play();
next_button.addEventListener(MouseEvent.CLICK, next);
function next(e:MouseEvent):void 
{	
	num = num += 1;
	if (num == song.length) {num = 0;}
	var snd:Sound = new Sound(new URLRequest(song[num]));
	channel.stop();
	newChannel[num] = snd.play();
	channel = newChannel[num];	
	trace (num);	
}
Я понимаю, что тут нужен обработчик SOUND_COMPLETE,
но приложить его я додумался только до копии функции next.
При этом срабатывает, но только один раз. Чтобы срабатывало постоянно, обработчик нужно засовывать в каждую такую копию. А тут получается матрёшка какая то -)

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

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
собственно, в функции next подписать функцию next на SOUND_COMPLETE для нового звука.

P. S. Точность SOUND_COMPLETE, кстати, по не зависящим от разработчиков плеера причинам, сильно хромает, доходя до 300-500 мс ошибки
__________________
4am is time to rock

Старый 13.02.2009, 02:03
Jex вне форума Посмотреть профиль Отправить личное сообщение для Jex Найти все сообщения от Jex
  № 3  
Ответить с цитированием
Jex

Регистрация: Nov 2007
Сообщений: 61
Дык, я ж именно так и делал. Пестня меняется только один раз. Чтобы включилась следующая, во вложенную функцию next с SOUND_COMPLETE нужно вкладывать еще одну функцию next с SOUND_COMPLETE. И так проделать столько раз, сколько мелодий в списке...
Или я неправильно вас понял?



Добавлено через 25 часов 47 минут
Ура. Разобрался таки.

Код AS3:
import flash.display.Graphics;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
 
 
var song:Array = new Array();
song[0] = "song0.mp3";
song[1] = "song1.mp3";
song[2] = "song2.mp3";
song[3] = "song3.mp3";
 
var newChannel:Array = new Array (song.length);
var num:int = 0;
var snd:Sound = new Sound(new URLRequest(song[num]));
var channel:SoundChannel = new SoundChannel();
 
channel = snd.play();
newChannel[num] = channel;
 
channel.addEventListener(Event.SOUND_COMPLETE, nextSong);
function nextSong(event:Event):void 
{	
	num = num += 1;
	if (num == song.length) {num = 0;}
	var snd:Sound = new Sound(new URLRequest(song[num]));
	newChannel[num] = snd.play();
	newChannel[num].addEventListener(Event.SOUND_COMPLETE, nextSong2);
	function nextSong2(event:Event):void 
	{		
 
		return nextSong(event);
	}
 
}


Последний раз редактировалось Jex; 14.02.2009 в 03:52.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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