我想在 andengine 中创建一个屏幕暂停按钮
我现在要做的是添加一个精灵,当我触摸它时,我会执行 engine.stop(),这个问题是引擎在我恢复游戏之前不会处理更多的触摸事件(现在我使用菜单按钮这个),那么有没有办法实现它?
谢谢!
看看 AndEngine 的例子,有一个项目展示了 AndEngine 中菜单的使用,你会发现除了停止引擎之外更好的实现菜单的方法。祝你好运!
我发现最好的方法是创建一个场景,并在暂停时以这种方式设置覆盖 onManagedUpdate
@Override
onManagedUpdate(float pSecondsElapsed){
if(mPaused) super.onManagedUpdate(0);
else super.onManagedUpdate(pSecondsElapsed);
}
这样,一切都可以完美运行,您可以在游戏层上执行此操作并像往常一样更新菜单层,
你可以很容易地在屏幕上做暂停按钮。您需要做的是,在屏幕上的任何位置创建一个暂停按钮,在触摸该按钮时,在原始暂停按钮上方显示一个带有播放按钮的 MenuScene。如果您注释掉 PauseMenu 示例中的 .buildAnimations() 代码,则可以将 .setPosition() 用于 MenuItem。
为了演示这个想法,我做了一个简单的活动来展示它的可能性。看看并为自己尝试。
链接:https ://github.com/reittes/On-Screen-Pause-Button
祝你好运
伪代码
@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if (pKeyCode == KeyEvent.KEYCODE_MENU && pEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (this.mEngine.isRunning()) {
gSceneGlobal.setChildScene(this.mGamePauseScene, false, true, true);
this.mEngine.stop();
} else {
gSceneGlobal.clearChildScene();
this.mEngine.start();
}
return true;
} else {
return super.onKeyDown(pKeyCode, pEvent);
}
}
我创建了我的类(MyEngine 扩展了 Engine)并改变了
@Override
public boolean onTouch(final View pView, final MotionEvent pSurfaceMotionEvent) {
if(!isRunning()) {
// add your code for engine.stop();
}
}
并在游戏类中创建 MyEngine 引擎;
我要做的是在您的文件中添加一个“暂停”布尔值,然后让按钮将其设置为 true,然后将您的引擎更新程序包含在一个if (!pause) {...}
块中,以使其在暂停时停止更新。不是最优雅的解决方案,但在我的游戏中有效,并且在取消暂停时没有引起性能问题。