Форум 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=142073)

filepark 12.07.2010 12:37

Запаздывание звука
 
В моём проекте есть звуковое сопровождение: клики по кнопкам, музыка и голосовое сопровождение. Клики включены в swf, музыка и голос загружаются. Упростив программу до минимума, мы получим:

Основная прога на таймлайне:
Код AS3:

var clickMenuButt:ClickMenuButt = new ClickMenuButt();
var musicBack:MusicBack = new MusicBack();
var musicOn:Boolean = false;
var voiceBack:VoiceBack = new VoiceBack();
var voiceOn:Boolean = false;
 
clickButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerClickButt);
function downHandlerClickButt(evt:MouseEvent):void {
        clickMenuButt.clickButt();
}
 
musicButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerMusicButt);
function downHandlerMusicButt(evt:MouseEvent):void {
        musicOn = !musicOn;
        if (musicOn) {
                musicBack.playMusic();
        } else {
                musicBack.stopMusic();
        }
}
 
voiceButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerVoiceButt);
function downHandlerVoiceButt(evt:MouseEvent):void {
        voiceOn = !voiceOn;
        if (voiceOn) {
                voiceBack.playVoice();
        } else {
                voiceBack.stopVoice();
        }
}

Класс ClickMenuButt:
Код AS3:

package {
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.media.SoundTransform;
 
        public class ClickMenuButt {
                static public var CLICK_VOLUME:Number = 1;
                private var clickSound:Sound;
                private var clickChannel:SoundChannel;
                private var clickTransform:SoundTransform;
 
                public function ClickMenuButt() {
                        clickSound = new ClickSound();
                        clickTransform = new SoundTransform();
                        clickTransform.volume = CLICK_VOLUME;
                }
 
                public function clickButt():void {
                        clickChannel = clickSound.play();
                        clickChannel.soundTransform = clickTransform;
                }
        }
}

Класс MusicBack (класс VoiceBack пока аналогичен):
Код AS3:

package {
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.media.SoundTransform;
        import flash.net.URLRequest;
 
        public class MusicBack {
                static public var MUSIC_VOLUME:Number = 0.05;
                private var musicSound:Sound;
                private var musicChannel:SoundChannel;
                private var musicTransform:SoundTransform;
 
                public function MusicBack() {
                        musicSound = new Sound(new URLRequest("Music01.mp3"));
                        musicTransform = new SoundTransform();
                        musicTransform.volume = MUSIC_VOLUME;
                }
 
                public function playMusic():void {
                        musicChannel = musicSound.play();
                        musicChannel.soundTransform = musicTransform;
                }
 
                public function stopMusic():void {
                        musicChannel.stop();
                }
        }
}

Если щёлкать по кнопкам без музыки и голоса всё ок, но включив музыку, тем более вместе с голосом, все звуки начинают тормозить в т.ч. и клики, для меня это неприемлемо. Почему и что делать?
Задержка звука может показаться незначительной, но это же без основной программы, потом задержка может значительно вырасти. Ссылка архив со всеми файлами http://filepark.narod.ru/sound_question.rar

Добавлено через 21 час 56 минут
Может быть есть возможность повысить приоритет кликов, чтобы хотя бы они срабатывали вовремя?


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

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