我正在从游戏库中动态触发短音(特别是Air for Android)。当用户单击按钮时,声音可能需要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
全部返回相同的结果。我知道这里有一些话题可以谈论这个,但没有一个提供了我能找到的真正解决方案。有没有办法缓存声音或将其存储在缓冲区中?
谢谢你的期待。
答案 0 :(得分:2)
重要更新
用于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多名开发师部门的负责人,围着一个巨大的桌子与我公司的每个主要参与者进行会面。
无论如何,也许我的更新确实流下了一些咆哮,但这是我认为的好信息,也是一个值得学习的好教训,这总是假设Adobe产品最糟糕。幸运的是,正如我在回答中提到的那样,这不是一个死胡同,并且有很多方法围绕他们的“商业模式”。
原始答案
这是AIR for Android中的一个错误:
http://forums.adobe.com/thread/753977
那篇文章已经过时了,但我在同一时间框架内看到了更多,并且我已经把它称为事实了。你有更新闪存CS5? (转到帮助 - >更新)。说实话,我甚至不知道他们是否已修补/解决了这个问题,但最好的办法是找到最新的Flex SDK并尝试使用它手动将SWF打包成APK。说明:
更详细/类似教程的说明:
如果这是一个错误,那么您将首先看到修复程序出现。尝试使用上述方法手动将SWF打包到APK中,并确保已将设备上的AIR for Android更新为AIR 2.6(最新版本,只需进入市场进行更新)。这可以解决问题,也可以在编译器和运行时都消除它。
答案 1 :(得分:0)
声音延迟是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();