2011-05-01 5 views
3
나는 내가 지금하는이와 함께) 문제를 스프라이트를 추가하고 나는 그것을 터치 할 때, 나는 (engine.stop을 할 것입니다 andengine

Andengine 화면은 일시 정지 버튼

의 화면 일시 정지 버튼을 만들려면

는 점이다 엔진은 게임을 다시 시작할 때까지 더 많은 touchevents를 처리하지 못합니다 (이제는 메뉴 버튼을 사용합니다). 그래서 그것을 달성 할 수있는 방법이 있습니까?

감사합니다.

답변

4

나는 그것이 장면을 생성하고 일시 정지 할 때 onManagedUpdate이 방법을 무시 설정 할 수있는 가장 좋은 방법을 발견

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

이런 식으로 모든 것을 작동 완벽하게, 당신은 게임 레이어에서 그것을 할 수 있고 평소와 같이 메뉴 레이어를 업데이트 할 수 있습니다.

4

AndEngine의 예제를 보면 AndEngine에서 메뉴 사용법을 보여주는 프로젝트가 있는데, 엔진을 중지하는 것 이외의 다른 메뉴를 구현하는 더 좋은 방법을 찾을 수 있습니다. 행운을 빕니다!

+0

그래서 menuscene을 만들 필요가 있다는 것을 의미합니까? 그리고 일시 중지 b를 추가하십시오. 그것에 utton? 게임 내 일시 중지 단추를 원한다. –

+2

메뉴 장면을 구현하고 게임에 단추를 추가 한 다음 해당 단추에 클릭 수신기를 추가하여 장면 사이를 전환합니다. AndEngineExamples에서 MenuExample 프로젝트를 확인하십시오. 메뉴 키를 누르면 메뉴 장면이 첨부됩니다. 이 코드를 버튼의 onClickListener에 복사하면됩니다. 행운을 빕니다! – Egor

1

파일에서 "일시 중지됨"부울을 추가 한 다음 버튼을 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

goodluck는

관련 문제