【问题标题】:AndEngine - lagging when playing soundAndEngine - 播放声音时滞后
【发布时间】:2012-06-08 03:51:17
【问题描述】:

我正在使用 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 行的注释),程序运行顺利。

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

【问题讨论】:

  • 我已经设法通过每次在新线程中调用 .play() 来克服这个问题。我想这不是最好的解决方案,但这消除了滞后。

标签: android andengine


【解决方案1】:

正如你提到的,当你继续播放声音时,它可以流畅地工作..那么问题不在于声音

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

【讨论】:

  • 不,即使我在 onUpdate 之外创建一个新线程来播放声音(1 次/秒),我仍然会遇到问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多