4

我正在用 AndEngine 创建一个简单的游戏。一个球落向地板,每当它与地板发生碰撞时,我都想播放一个简短的碰撞声。在方法 onUpdate() 中,我检查碰撞并相应地播放声音。

我使用 Sound 类来播放声音(如在 AndEngine 的 SoundExample 中)。在三星 Galaxy S2 上进行测试。

问题是播放声音时程序会滞后。它甚至会影响游戏的物理效果(有时当禁用声音时,球会反弹到高于最高点)。

这是代码:

public void onUpdate(float pSecondsElapsed) {
// mSound.play();       
if (this.mSprite.collidesWith(ball.getSprite())) {          
    if (!colliding && mSound != null){ // play sound for first collision only
        mSound.play();          
        colliding = true;
    }
}
else{
    colliding = false;
}

}

如果我删除 mSound.play() 或继续播放声音(删除第 2 行的注释),程序运行顺利。

有没有人遇到同样的问题?并有摆脱滞后的解决方案?非常感谢!

4

1 回答 1

1

正如您所提到的,当您继续播放声音时它可以正常工作..那么问题不在于声音

collidesWith() 方法可能是你的罪魁祸首,记住 onUpdate 每一帧都会被调用 .. 也许你必须重新设计你的代码或限制每秒的帧数 [更改你的引擎选项以使用 FixedStepEngine 来实现]

于 2012-11-05T19:00:41.987 回答