【发布时间】:2011-05-01 16:45:45
【问题描述】:
我想在 andengine 中创建一个屏幕暂停按钮
我现在要做的是添加一个精灵,当我触摸它时,我会执行 engine.stop(),这个问题是引擎在我恢复游戏之前不会处理更多的触摸事件(现在我使用菜单按钮),那么有没有办法实现呢?
谢谢!
【问题讨论】:
我想在 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
祝你好运
【讨论】:
我要做的是在您的文件中添加一个“暂停”布尔值,然后将按钮设置为 true,然后使用 if (!pause) {...} 块包含您的引擎更新程序,以使其在暂停时停止更新。不是最优雅的解决方案,但在我的游戏中有效,并且在取消暂停时没有引起性能问题。
【讨论】:
伪代码
@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 引擎;
【讨论】: