我试图创建一个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