Задержка звука в AS3 - PullRequest
       12

Задержка звука в AS3

0 голосов
/ 17 апреля 2011

Я запускаю короткие звуки динамически из библиотеки для игры (в частности, Air для Android).Когда пользователь нажимает кнопку, воспроизведение звука может занять до 600 мс.Я настроил его на любое молчание перед реальным звуком, называя звук следующим образом:

private var channel:SoundChannel = new SoundChannel();
private var buttonClickSound:Sound = new button_click();

public function buttonDownClick() {
    channel = buttonClickSound.play(63);
}

Все еще получаю смехотворную задержку.

То, что я пробовал: преобразование MP3 в wavразмещение Sound Clip на временной шкале вызова Sound Clip из urlLoader

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

Спасибо за поиск.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Важное обновление

Flash CS5 AIR для функциональности Android никогда не выходил из бета-версии. И, к сожалению, как известно Adobe, функциональность была прекращена для Flash CS5, так что полная рабочая / обновленная версия станет функцией продажи для CS6 или CS5.5. У меня много-много чувств по этому поводу как к клиенту, который потратил буквально МНОГИЕ ТЫСЯЧИ долларов на продукты Adobe, но я буду хранить эту информацию, а не мою ярость по отношению к чувствам Adobe . В доказательство этого см .:

http://labs.adobe.com/technologies/flashpro_extensionforair/

Так что, скорее всего, это одна из многих ошибок, оставшихся не исправленными в AIR для Android в CS5. Это не удивительно, поскольку, когда я купил мастер-коллекцию CS4, которая обещала AIR 1.5, даже AIR 1.5 был сломан, а все исправления ошибок были перенесены в 2.0, которая была доступна только для CS5. Одной из самых больших ошибок, которые они никогда не исправляли в CS4 AIR 1.5, была серьезная, серьезная ошибка в веб-наборе, которая почти полностью отключала использование веб-набора в AIR. Фактически, когда я работал на Webkinz.com, крупный проект был полностью выброшен из окна, и меня фактически высмеивали за предложение использовать AIR, рекламировать всю его удивительность, а затем, когда появились эти ошибки, я выглядел как идиот перед всеми моими коллегами. , Буквально, я не шучу, что руководитель моего более чем 180-летнего подразделения разработчиков сосредоточил меня на встрече за гигантским столом с каждым крупным игроком в этой компании.

В любом случае, возможно, мое обновление превратилось в какую-то напыщенную речь, но я думаю, что это хорошая информация и хороший урок, который всегда считается худшим для продуктов Adobe. К счастью, как уже упоминалось в моем ответе, это не тупик, и существуют способы обойти их «бизнес-модель».

Оригинальный ответ

Это ошибка в AIR для Android:

http://forums.adobe.com/thread/753977

Этот пост датирован, но я видел еще несколько за тот же период времени и достаточно, чтобы я назвал это фактом. Вы обновили флеш CS5? (Перейдите в Справка-> Обновления). Честно говоря, я даже не знаю, исправили ли они эту ошибку или исправили ее, но вам лучше всего узнать, что нужно взять самый последний Flex SDK и попробовать вручную упаковать ваш SWF в APK, используя его. Инструкции:

http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac25d3d8c712b2d86751e-8000.html#WS901d38e593cd1bac25d3d8c712b2d86751e-7ffb

Более подробные / похожие на инструкции:

http://thulasiramsoft.wordpress.com/2011/01/16/build-apps-for-android-using-as3-without-a-device-using-flex-air/

Если это ошибка, то здесь вы увидите, что исправление появится первым. Попробуйте упаковать SWF-файл в APK вручную, используя описанные выше методы, и убедитесь, что вы обновили AIR для Android на устройстве до AIR 2.6 (последняя версия, просто перейдите на рынок, чтобы обновить). Это либо исправит проблему, либо исключит ее как возможность как на стороне компилятора, так и на этапе выполнения.

0 голосов
/ 08 апреля 2013

Задержка звука - это ошибка в экспорте Flash в AIR.

Простой способ - включить фоновую музыку, а звуковое устройство не засыпает. Если вам не нужна музыка, вы можете издавать тихий звук, который звучит вечно. Это решает проблему с задержкой звука для других коротких звуков.

[Embed(source="sfx.mp3")]
const snd_sfx:Class;

const sfx:Sound = new snd_sfx();

const SilentSoundTransform:SoundTransform = new SoundTransform(0);

function playSoundSilentlyEndlessly(evt:Event = null):void
{
    sfx.play(0, 1000, SilentSoundTransform).addEventListener(Event.SOUND_COMPLETE, playSoundSilentlyEndlessly, false, 0, true); // plays the sound with volume 0 endlessly
}

playSoundSilentlyEndlessly();
...