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

Dezar 01.03.2016 23:50

тормоза во время воспроизведения звука
 
Здравствуйте.
я создал проект, где много возни с звуком.
в основном работает extract и play.

суть не в этом.сама программа работает как нужно, кроме одного момента.
звук подлагивает.
пример.я беру всего 1 трек (mp3 файл весом в 20 кб).звук ударника. и воспроизвожу его по команде.
бывает что в секунду до 2 раз.
и я понимаю, что звук тормозит.
кто может сказать.
или подсказать.
почему в флэше звук может лагать, тормозить и тп?

Max_Payn 02.03.2016 02:45

а вы случаем не на линуксе?

caseyryan 02.03.2016 05:50

Все дело в том, что флеш каждый раз создает новый SoundChannel для каждого вызова Sound#play() из-за этого старые звуковые каналы попадают в мусор и копятся просто в неимоверном количестве. А потом сборщик мусора это все удаляет, из-за этого и лагает.
Система работы со звуком во флеше очень не продуманная

Dezar 02.03.2016 17:22

нет.я на старом добром 7-ом виндоусе.

по поводу channel.идею понял.спасибо.
попробую в 1 чаннеле сидеть)

undefined 02.03.2016 17:36

Если требуется чтоб несколько звуков накладывались друг на друга - на одном канале не выйдет.К сожалению, единственный способ создать новый SoundChannel - вызвать метод play у объекта класса Sound, поэтому пул тут не применишь.Да и уже отыгравший канал вроде как заново не запустишь.

Добавлено через 3 минуты
да, еще момент - если все это на десктопе тормозить оно не должно даже с учетом работы GC(если только там не тысячами звуки запускаются).Раз все же тормозит - возможно дело в самом мп3

Dezar 02.03.2016 17:43

залил для каждого звука channek в массив.
то есть при каждом play работает 1 channel из массива.точнее один и тотже для каждого звука(у каждого свои).
проблема не решилась.все равно есть тормоза.причем они то есть, то их нет.как будто ресурсов не хватает.
ДЕСКТОП не проверял.сейчас по быстрому сделаю и отпишусь.

Добавлено через 7 минут
тоже самое.но вряд ли проблема в звуках.уже больно мало они весят

Добавлено через 14 минут
тэкс.как бы то не было странно, решение ВРОДЕ нашлось.
у меня интервал , когда должен играть трек задавал Timer.хотел избежать привязки к фпс.
сменил на EnterFrame и все пропало.никаких зависании.

caseyryan 02.03.2016 18:37

Цитата:

то есть при каждом play работает 1 channel из массива.точнее один и тотже для каждого звука(у каждого свои).
Это невозможно. Каждый вызов sound.play() создает новый звуковой канал. Никакие каналы из массива использоваться не будут.

undefined 02.03.2016 18:59

Цитата:

у меня интервал , когда должен играть трек задавал Timer
и чему равен этот интервал?

Dezar 02.03.2016 19:32

Цитата:

Это невозможно. Каждый вызов sound.play()
не понял.

если мои код
Код AS3:

  var sound:Sound = new Sound();
  var chanel:SoundChannel = new SoundChannel();
  var arr:Array = new Array();
  arr.push(sound);
  arr.push(chanel);

и при вызове звука я делаю
Код AS3:

arr[1].stop();
arr[1] = arr[0].play(0);

каким образом создаются новые channel's ?

Цитата:

и чему равен этот интервал?
зависит от ритма

undefined 02.03.2016 19:39

Цитата:

arr.push(sound);
arr.push(chanel);
в один массив складываются и Sound'ы и каналы?Оригинально. И вообще для чего создается
Цитата:

var chanel:SoundChannel = new SoundChannel();
если потом он затирается новым чанелом?
Цитата:

arr[1] = arr[0].play(0);
Добавлено через 2 минуты
Цитата:

зависит от ритма
предлагаю проверить с какой частотой создаются новые каналы.Сдается мне, что там интервал ~единиц мс,неудивительно что оно лагает.


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

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