Oyun alanının haritasını görüntüleyen bir GLSurfaceView oluşturmaya çalışıyorum. Oyuncu hareket ettiğinde, oyun aktivitesi highlightSpot'u çağırır ve bu da bir render isteğini tetiklemelidir. Görünümü yeniden çizmek istediğim tek zaman, oyuncunun hareket ettiği zamandır.GLSurfaceView, render kipi değiştirilmesine rağmen sürekli olarak iş görür
Ancak, şu anki uygulamamla birlikte, GLSurfaceView cihazımda setRenderMode(RENDERMODE_WHEN_DIRTY)
numaralı telefonu aramasına rağmen, render modu hala sürekli görünüyor. Kontrol etmek için, onDrawFrame yöntemimde tek bir println ifadesini attım ve uygulamamı çalıştırdığımda, çıktı, oyuncunun bir kez bile taşınmadan logcat'ımı hızla doldurmasına neden oluyor. Görünümü yalnızca sorulduğunda render etmek için yapmam gereken başka bir şey var mı?
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();
}
}
:
Bu benim istediğim tam olarak ne olduğu, bunu istemek sadece işlemek için zorlamak gibi görünüyor bu sabitleme sonra, ben de benim highlightSpot işlevinde requestRender deyimi kaldırıldı, günümüze dek call requestReter, şimdi yerine taşıyın. VurgulayınSpot'ta çalışacağına inanıyorum, ama sadece bir kez aramam gerekiyor. –
Aslında, hayır, highlightSpot() işlevinde işe yaramaz çünkü GLSurfaceView nesnesinde, renderer olarak kullandığım SurfaceViewClass nesnesinde değil çağrılmalıdır. Bu iki soruyu sormazsam, bu soruyu tamamen sormaktan kaçınmış olabilirim. –