我試圖創建一個GLSurfaceView,顯示一個遊戲區域的地圖。當玩家移動時,遊戲活動調用highlightSpot,這反過來會觸發渲染請求。我想重新繪製視圖的唯一時間是玩家移動的時間。GLSurfaceView不斷渲染,儘管更改渲染模式
但是,在我目前的實現中,儘管在我的GLSurfaceView上調用了setRenderMode(RENDERMODE_WHEN_DIRTY)
,但它的渲染模式似乎仍然是連續的。爲了檢查,我在我的onDrawFrame方法中拋出了一個println語句,並且當我運行我的應用程序時,輸出很快填滿了我的logcat而沒有播放器移動一次 - 這顯然不符合我的意圖。我還需要做些什麼才能讓視圖僅在被問到時才呈現?爲了簡明起見,我忽略了我的onDrawFrame,OnSurfaceChanged和onSurfaceCreated方法,因爲我沒有改變渲染模式或者在這些方法中的任何地方請求渲染,所以我忽略了我的onDrawFrame,OnSurfaceChanged和onSurfaceCreated方法。 。如果有人認爲它可能是相關的,我也可以發佈這些。)
public class SurfaceViewClass extends GLSurfaceView implements Renderer {
public SurfaceViewClass(Context context) {
super(context);
...
this.setRenderer(this);
this.setRenderMode(RENDERMODE_WHEN_DIRTY);
}
public void highlightSpot(int x, int y) {
/* change some variables here */
...
this.requestRender();
}
}
注:固定在此之後,我也去掉了requestRender聲明我highlightSpot功能,因爲我現在請調用movePlayer()中的requestRender。我相信它可以在突出顯示中工作得很好,但我只需要調用一次即可。 – 2010-12-02 04:28:00