Показать сообщение отдельно
Старый 01.10.2009, 02:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вообще setInterval не точен.
Кстати, попробуйте посмотреть еще варианты с методом
Код:
position (Sound.position property)
public position : Number [read-only]
The number of milliseconds a sound has been playing.
Тут, в принципе, в миллисекундах указывается текущее положение воспроизведения.
Если проверять position максимально быстро, можно, видимо, отследить нужный момент и стартовать тут же второй экземпляр. Хотя "максимально быстро" через setInterval также делать придется. Хотя, может кто и подскажет более решение с повышенной точностью.

Вообще, еще для видео, например, есть Cue Points - можно при импорте видео во флеш прошить в нем маркеры в произвольных местах с высокой точностью и назначить по их достижению при проигрывании ролика запуск функции-обработчика. Но для mp3-шек, кажется, подобного нет. Хотя не уверен.

Кстати, я проверил - можно зацикливать через onSoundComplete. Видимо, главное - чтобы концы сращиваемой композиции подходили друг другу на начальном и конечном краях, и убрать компрессию, она может давать краевые эффекты.
То есть попробуйте нескомпрессированный WAV и убрите в настройках Publish Setting компрессию вообще, поставьте там Disabled.
Посмотрите пример 1, там использован программный loop для wav-файла. Склейка незаметна.
Конечно, тут дело может быть в том, что использованный в примере кусок с ритмической точки зрения представляет собой один квадрат (музыканты меня поправят, если что), и ухо не может понять, какой интервал между отдельными кусками правильный, и воспринимает имеющееся место склейки как правильный интервал.

В общем, задачка оказалась интересной, я ее почти решил.
Это пример 2, можете его использовать как стенд для вашего loop'а. Огрехи там есть, надо еще наводить лоск.
Опытным путем установил, насколько старт второго экземпляра должен опережать окончание первого, то есть даем время флешу на "раскачку".
Позиции определяем через Sound.position(), используем setInterval.
Возможно нужно будет подобрать интервалы иначе, там есть тонкие моменты, но в целом логика такая.
Компрессия везде отключена и использован WAV.
Вложения
Тип файла: rar AS_Loop.part1.rar (300.0 Кб, 87 просмотров)
Тип файла: rar AS_Loop.part2.rar (238.6 Кб, 74 просмотров)
Тип файла: rar Cклеиваем звук без шва.part1.rar (300.0 Кб, 85 просмотров)
Тип файла: rar Cклеиваем звук без шва.part2.rar (300.0 Кб, 82 просмотров)
Тип файла: rar Cклеиваем звук без шва.part3.rar (94.7 Кб, 70 просмотров)


Последний раз редактировалось mooncar; 01.10.2009 в 13:43.