Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   импорт Wav (http://www.flasher.ru/forum/showthread.php?t=67237)

iNils 29.07.2005 15:25

Так конечно ошибка будет. Звук играет ровно без задержек. А любая тормознутось машины сразу вызовит смешения кадров.
Нужно подсчитать количество миллисекунд (можно и просто секунд *1000) и забить в массив.

Теперь удаляешь звук с тамлайн и создаешь экзепляр класса Sound.
К ним делаешь attachSound звука из библиотеки. И запускаешь звук start(0,0). Теперь внутри onEnterFrame проверяшешь у звука значение position и сравниваешь его с значением в массиве для n-го текста. Если position равен или больше, то меняешь текст и сравниваешь уже со следущим значеним в массиве.

Muharadga 29.07.2005 15:34

Эт я и сам знаю, саму процедуру на словах, но я не знаю actionScript, потому и обратился сюда, я Director'щик на лино это сделал бы в два счета, но надо во флэше.... можешь отредактировать код? просто в action'e мой познания ограничиваются навигацией по таймлайну...

stop();
_root.my_sound = new Sound();
_root.my_sound.attachSound("cong1");

_root.onEnterFrame = function() {
_root.my_sound.start(0,1000)
if (start_ == 1) {
if (i == 75) {
_root.nextFrame();
} else {
_root.stop();
}
i<75 ? i++ : i=0;
}
};



так?

iNils 29.07.2005 15:42

Код:

stop ();
_root.my_sound = new Sound ();
_root.my_sound.attachSound ("cong1");
_root.my_sound.start ();
// массив с времене окончанием каждого куска текста. в примере всего 5 кусков и каждый длится равно 1,5 секунды
_root.arraySound = new Array (1500, 3000, 4500, 6000);
_root.frame = 0;
_root.onEnterFrame = function () {
        if (_root.my_sound.position > _root.arraySound[_root.frame]) {
                _root.nextFrame ();
                _root.frame++;
        }
        if (_root.frame > _root.arraySound.length) {
                trace ("значения в массиве или звук закончились");
        }
};


DeadMorozz 29.07.2005 15:42

проще всего переходить по кадрам, отслеживая конец звука.
например, в первой строке кадра ты каждый раз инициализируешь новый рассказ. А потом, отсдеживая его завершение, переходишь дальше. Вот в таком ключе:
Код:

speech.onSoundComplete = function() {
  gotoAndPlay(nextFrame);
}


iNils 29.07.2005 15:43

я так понял там звук одним куском

Muharadga 29.07.2005 15:46

Нет... несколько звуковых файлов cong1. cong2, cong3, cong4 .... и тд

iNils 29.07.2005 15:49

Цитата:

Сообщение от Muharadga
Нет... несколько звуковых файлов cong1. cong2, cong3, cong4 .... и тд

Эх... Тогда воспользуейся новогодним предложением Деда Мороза :)

Muharadga 29.07.2005 15:53

значит просто вставить код:

_root.my_sound = new Sound ();
_root.my_sound.attachSound ("cong1");
_root.my_sound.start ();
_root.my_sound.onSoundComplete = function() {
gotoAndPlay(nextFrame);
}

во фрэйм, вместо моего счетчика?

iNils 29.07.2005 15:57

Почти:
Код:

_root.my_sound = new Sound ();
_root.my_sound.attachSound ("cong1");
_root.my_sound.start ();
// количество звуков всего
len = 5;
// счетчик звуков
cx = 1;
_root.my_sound.onSoundComplete = function () {
        if (cx < len) {
                cx++;
                _root.my_sound.attachSound ("cong" + cx);
                _root.my_sound.start ();
                gotoAndPlay (nextFrame);
        } else {
                trace ("конец");
        }
};


Muharadga 29.07.2005 16:03

существует еще один ньюанс, за время проигрывания звука и показа текста должно смениться по очередно несколько кадров с фотографиями... это все усожняет?


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

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