2012-05-02 4 views
2

Я пытаюсь сделать меню паузы, когда пользователь нажимает кнопку меню (приостанавливает игру). Игра делает паузу, но ничего не рисует ... может быть, это рисунок под моим GLSurfaceView? Вот мой код.Вид не рисуется поверх GLSurfaceView

public class GameActivity extends Activity { 

private GLSurfaceView mGLSurfaceView; 
private static final String TAG = "Game"; 
private MainGamePanel mGame; 

private View mPauseMessage = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    SharedPreferences prefs = getSharedPreferences("GameSettings", MODE_PRIVATE); 

    setContentView(R.layout.main); 
    mGLSurfaceView = (GLSurfaceView) findViewById(R.id.glsurfaceview); 
    mPauseMessage = findViewById(R.id.pausedMessage); 

    mGLSurfaceView.setEGLConfigChooser(false); // 16 bit, no z-buffer 

    mGame = new MainGamePanel(); 
    mGame.setSurfaceView(mGLSurfaceView); 

    .... 
    mGLSurfaceView.setRenderer(mGame.getRenderer()); 

} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    boolean result = true; 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     if (mGame.isPaused()) { 
      this.resume(); 
      if (mPauseMessage != null) { 
       mPauseMessage.setVisibility(View.GONE); 
      } 
     } else { 
      this.pause(); 
      if (mPauseMessage != null) { 
       mPauseMessage.setVisibility(View.VISIBLE); 
      } 
     } 
    } 
    return result; 
} 

protected void pause() { 
    super.onPause(); 

    mGame.onPause(); 
    mGLSurfaceView.onPause(); 
} 


protected void resume() { 
    super.onResume(); 

    mGame.onResume(); 
    mGLSurfaceView.onResume(); 
} 

И из моего XML:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<android.opengl.GLSurfaceView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/glsurfaceview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 
    <LinearLayout 
     android:id="@+id/pauseMenu" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone"> 
    <ImageView 
    android:id="@+id/pausedMessage" 
    android:src="@drawable/pause" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="center"/> 
</LinearLayout> 
</FrameLayout> 

ответ

2

Может быть, у вас есть линия где-то говорят:

mGLSurfaceView.setZOrderOnTop(true); 

переопределения OpenGL рисовать выше всего, даже если у вас есть другие взгляды на вершине из этого в вашем RelativeLayout. Попробуйте комментировать это, если у вас есть.

0

У меня была аналогичная проблема. Но в моем случае pauseMenu был НЕВИДИМЫЙ, но не GONE. Когда я сменил его на GONE, все работало нормально. Но это происходит только на некоторых устройствах. Возможно, попробуйте View.bringToFront()

Смежные вопросы