【问题标题】:Sound latency in AS3AS3 中的声音延迟
【发布时间】:2011-04-16 22:38:00
【问题描述】:

我正在从游戏库中动态触发短声音(特别是适用于 Android 的 Air)。当用户单击按钮时,声音可能需要长达 600 毫秒才能真正播放。 我通过这样调用声音将其设置为实际声音之前的任何静音:

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

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

仍然会出现可笑的延迟。

我尝试过的事情: 将 MP3 转换为 wav 将声音剪辑放置在时间线中 从 urlLoader 调用 Sound Clip

全部返回相同的结果。我知道这里有讨论这个问题的线程,但没有一个提供我能找到的真正解决方案。有没有办法缓存声音或将其存储在缓冲区中?

感谢收看。

【问题讨论】:

  • 你有什么解决办法吗?您帮我解决了视频延迟问题,我知道您对此有所准备:)

标签: actionscript-3 audio flash-cs5


【解决方案1】:

重要更新

用于 android 功能的 flash CS5 AIR 从未退出测试版。可悲的是,正如 adobe 所著名的那样,flash CS5 的功能已经停止,因此完整的工作/更新版本将成为 CS6 或 CS5.5 的销售功能。作为一个在 adobe 产品上花费了数千美元的客户,我对此有很多很多的感受,但我会保留这些信息,而不是我的 对 adobe 的愤怒感受。有关这方面的证明,请参阅:

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

因此,这很可能是 CS5 中 AIR for android 中未修复的许多错误之一。这并不奇怪,因为当我购买了承诺 AIR 1.5 的 CS4 大师合集时,甚至 AIR 1.5 都被破坏了,所有的错误修复都被整合到 2.0 中,仅适用于 CS5。他们在 CS4 AIR 1.5 中从未修复的最大错误之一是 webkit 中的一个严重的严重错误,它几乎导致 AIR 中的任何 webkit 使用都无法正常工作。事实上,当我在 Webkinz.com 工作时,一个大项目完全被抛在了窗外,我实际上因为提出使用 AIR 的提议而被嘲笑,吹捧它的惊人之处,然后当这些 bug 出现时,在我所有同行面前看起来像个白痴.从字面上看,我不是在开玩笑,我 180 多名开发人员部门的负责人让我在一张巨大的桌子旁与该公司的每个主要参与者开会。

无论如何,也许我的更新确实引起了一些抱怨,但我认为这是很好的信息,也是值得学习的好教训,这始终是 Adob​​e 产品最糟糕的假设。幸运的是,正如我在回答中提到的,这不是死胡同,他们的“商业模式”有很多方法。

原答案

这是 AIR for Android 中的一个错误:

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

该帖子已过时,但我在同一时间范围内看到了更多帖子,足以称其为事实。你更新了flash 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 for android 更新到 AIR 2.6(最新,只需去市场更新即可)。这将解决问题或消除它在编译器和运行时方面的可能性。

【讨论】:

  • 老实说,我很难相信自己这确实仍然是一个错误/问题,但我发现证据表明至少有一次确实如此。也许您仍在使用来自 beta 测试的 air for android 插件。运行 IDE 更新将确定这一点,或者打开 Adob​​e Extension Manager(它将检查插件更新)。
  • 没关系,我现在几乎可以肯定它是闪存/编译端的一个错误。请参阅我的更新答案。典型的土坯。
  • 我有一种感觉,考虑到 Adob​​e 的往绩记录和我在 Air for Android 开发方面已经取得的完美成绩(好得令人难以置信),这些就是将要提出的解决方案。我已经尝试通过 adobeAIRSDK 而不是 flash IDE 手动打包它,结果仍然相同。接下来我会尝试使用 flex,但我怀疑我会得到不同的结果。不过,这是一个非常有趣的故事,我无法想象会经历这样的事情,尤其是因为我喜欢戴着耳机坐在自己的小角落里工作,而不是被期望做出那样的决定。
  • 我也是最新版的flash。
  • 我发现的另一篇文章指出,他们在 AIR for android 中的音频延迟是由于基本上整个应用程序的进程密集度如此之高,以至于声音因普通的旧延迟而延迟。来源:flixel.org/forums/index.php?topic=2924.0;prev_next=prev。考虑到过去您遇到过滞后/缓慢的性能问题,这可能是相关的。
【解决方案2】:

声音延迟是 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多