2011-05-01 145 views
3

我想創建andengineAndengine屏幕上的暫停按鈕

屏幕上的暫停鍵我現在要做的是與此增加一個精靈,當我觸摸它,我做engine.stop(),問題是,引擎不會處理更多的觸發事件,直到我恢復遊戲(現在我使用菜單按鈕),那麼是否有辦法實現它?

謝謝!

回答

4

我發現這樣做是創建一個場景,和暫停時,設置覆蓋onManagedUpdate這種方式的最佳途徑

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

這樣一切正常完美的,你可以在遊戲層做到這一點,並像往常一樣更新菜單層,

4

看看AndEngine的例子,有一個項目顯示了在AndEngine中使用菜單,你會發現一個更好的方式來實現一個菜單,而不是停止引擎。祝你好運!

+0

所以,你的意思是我需要創建一個menuscene ?,然後添加暫停b utton到它?原因我想在遊戲中使用我的暫停按鈕 – 2011-05-02 16:55:02

+2

實現菜單場景,向您的遊戲添加一個按鈕,並在該按鈕上添加一個點擊偵聽器以在場景之間切換。檢查AndEngineExamples中的MenuExample項目,菜單場景附加在按下的菜單鍵上。只需將此代碼複製到您的按鈕的onClickListener。祝你好運! – Egor 2011-05-03 10:33:05

1

我會做的是在文件中添加一個「paused」布爾值,然後讓按鈕將其設置爲true,然後使用if (!pause) {...}塊包含引擎更新程序,以使其在暫停時停止更新。不是最優雅的解決方案,但在我的遊戲中工作,導致沒有暫停的性能問題。

1

Psedu代碼

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

創建我的類(MyEngine擴展引擎),改變

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

,並創建遊戲類MyEngine引擎;

2

你可以很容易地在屏幕上暫停按鈕。你需要做的是,在屏幕上的任何地方創建一個暫停按鈕,觸摸該按鈕,在原始暫停按鈕上顯示帶有播放按鈕的MenuScene按鈕。如果您註釋掉PauseMenu示例中的.buildAnimations()代碼,則可以使用MenuItem的.setPosition()。

爲了演示這個想法,我做了一個簡單的活動來展示它的可能性。看一看,然後嘗試一下。

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

好運