【问题标题】:Andengine onScreen Pause buttonAndengine 屏幕上的暂停按钮
【发布时间】:2011-05-01 16:45:45
【问题描述】:

我想在 andengine 中创建一个屏幕暂停按钮

我现在要做的是添加一个精灵,当我触摸它时,我会执行 engine.stop(),这个问题是引擎在我恢复游戏之前不会处理更多的触摸事件(现在我使用菜单按钮),那么有没有办法实现呢?

谢谢!

【问题讨论】:

    标签: android andengine


    【解决方案1】:

    查看 AndEngine 的示例,有一个项目展示了 AndEngine 中菜单的使用,您会发现除了停止引擎之外实现菜单的更好方法。祝你好运!

    【讨论】:

    • 所以你的意思是我需要创建一个menuscene?,然后添加暂停按钮?因为我想要游戏中的暂停按钮
    • 实现一个菜单场景,为您的游戏添加一个按钮,并在该按钮上添加一个点击监听器以在场景之间切换。从 AndEngineExamples 检查 MenuExample 项目,菜单场景附加在按下的 Menu 键上。只需将此代码复制到按钮的 onClickListener。祝你好运!
    【解决方案2】:

    我发现最好的方法是创建一个场景,并在暂停时以这种方式设置覆盖 onManagedUpdate

    @Override
    onManagedUpdate(float pSecondsElapsed){
     if(mPaused) super.onManagedUpdate(0);
     else        super.onManagedUpdate(pSecondsElapsed);
    }
    

    这样一切都可以完美运行,您可以在游戏层上执行此操作并照常更新菜单层,

    【讨论】:

      【解决方案3】:

      您可以很容易地在屏幕上执行暂停按钮。您需要做的是,在屏幕上的任何位置创建一个暂停按钮,在触摸该按钮时,在原始暂停按钮上显示一个带有播放按钮的 MenuScene。如果您注释掉 PauseMenu 示例中的 .buildAnimations() 代码,则可以将 .setPosition() 用于 MenuItem。

      为了展示这个想法,我做了一个简单的活动来展示它的可能性。看看自己试试吧。

      链接:https://github.com/reittes/On-Screen-Pause-Button

      祝你好运

      【讨论】:

        【解决方案4】:

        我要做的是在您的文件中添加一个“暂停”布尔值,然后将按钮设置为 true,然后使用 if (!pause) {...} 块包含您的引擎更新程序,以使其在暂停时停止更新。不是最优雅的解决方案,但在我的游戏中有效,并且在取消暂停时没有引起性能问题。

        【讨论】:

          【解决方案5】:

          伪代码

          @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);
              }
          }
          

          【讨论】:

            【解决方案6】:

            我创建了我的类(MyEngine 扩展了 Engine)并进行了更改

            @Override
            public boolean onTouch(final View pView, final MotionEvent pSurfaceMotionEvent) {                      
            if(!isRunning()) {
              // add your code for engine.stop();
              }
            }
            

            并在游戏类中创建 MyEngine 引擎;

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-01-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多