Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как избавиться от задержки звуков? (http://www.flasher.ru/forum/showthread.php?t=171128)

Hauts 09.11.2011 13:03

Как избавиться от задержки звуков?
 
Всем привет. Неприятно удивился, когда попробовал по таймеру (с интервалом в 100мс) запускать один и тот же короткий звук (удар бас-бочки) — очень заметны перепады темпа и "сбои".

Кто-нибудь может мне подсказать, как добиться правильного неизменного темпа?

В дополнение простейший код:
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.TimerEvent;
        import flash.media.Sound;
        import flash.utils.Timer;
 
        /**
        * ...
        * @author Hauts
        */

        [Frame(factoryClass="Preloader")]
        public class Main extends Sprite
        {
 
                [Embed(source = "../lib/sounds/36.mp3")] private var drum_36:Class;
                private var drumSound:Sound;
 
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        drumSound = new drum_36() as Sound;
 
                        var timer:Timer = new Timer(100);
                        timer.addEventListener(TimerEvent.TIMER, onTimer);
                        timer.start();
                }
 
                private function onTimer(e:TimerEvent):void
                {
                        drumSound.play();
                }
        }
}


2Sun 09.11.2011 13:25

А длительность звука не превышает 100мс?? Если да - то вполне возможны такие сбои.

Hauts 09.11.2011 13:44

Протестировал с разной продолжительностью звуков — эффект один и тот же.

Genzo 09.11.2011 13:49

ИМХО. Единственный правильный вариант для таких вещей, это писать все в один Sound, с нужными задержками и т.п., и запускать его.

Hauts 09.11.2011 15:12

Я же не описал вещь, которую хочу сделать:) Один звук я использовать не могу.

goodguy 09.11.2011 20:56

Это косяк кодека mp3. Единственное, что поможет в такой ситуации - открыть этот звук в какой-то проге типа sound forge удалить пустые места с начала файла и сохранить в wav, после этого закинуть звук в библиотеку Flash IDE выбрать там качество RAW, экспортировать для actionscript и создать swc, после этого подключать библиотеку к проекту.
Через embed mp3 всегда будет с пустыми местами. Отсюда и сбои в темпе.

Котяра 09.11.2011 21:24

Можно вручную запускать с определённого места (на величину задержки)
Но для каждого звука - своя задержка - я в своё время долго с этим мучился и в xml для внешних звуковых ресурсов прописывал эту задержку.

goodguy 09.11.2011 21:48

А я помучился, залез в гугл, и нашел решение )

Psycho Tiger 09.11.2011 22:10

Цитата:

Сообщение от Hauts (Сообщение 1044827)
Я же не описал вещь, которую хочу сделать:) Один звук я использовать не могу.

Речь идёт о вписывании в один звук байтов с течением времени, т.е. генерацией на лету.

Котяра 10.11.2011 00:58

Цитата:

А я помучился, залез в гугл, и нашел решение )
И?
Требуем!


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

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