2016-04-02 15 views
0

olarak değiştirin. Çalıştırılabilir arabirimi uygulayan bir sınıftaki bir öznitelik boyunca değişiklik yapmak mümkün mü?Bir Çalışabilir sınıf özniteliğini, tüm zamanlar boyunca

Runnable arabirimini uygulayan bir GamePanel sınıfında bir oyun döngüsü oluşturdum. Beklediğim gibi Ancak, böyle bir boolean niteliğini değiştirmek mümkün değildir: Benim MainActivity olarak

public class GamePanel extends SurfaceView implements Runnable { 
    private volatile boolean _isPaused; 
    public synchronized void setPause(boolean b) { 
     _isPaused = b; 
    } 

    public synchronized boolean getPause() { 
     return _isPaused; 
    } 

    @Override 
    public void run() { 

     while (!_isPaused) 
      draw(); 
    } 

    public void draw() 
    { 
     if (_isPaused) 
      drawPauseScreen(); 
     else 
      drawGameScreen(); 
    } 
} 

, basit bir düğmeye bağlı bir dinleyici var:

private View.OnClickListener buttonPauseListener = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     _gamePanel.setPause(!_gamePanel.getPause()); 
    } 

}; 

ben tıkladığımda duraklatma düğmesi, boole değiştirilir, ancak üzerine tıklayarak bir saniye artık boole değiştirmez.

+0

Her zaman, _isPaused değerini ayarlıyorsunuz, onClick'te bunu yapmamalısınız. _gamePanel.setPause (! _ gamePanel.getPause()); – jonathanrz

+0

Kodu düzenledim, bir yapıştırma hatasıydı. Bende: _gamePanel.setPause (! _ GamePanel.getPause()); ve bu çalışmıyor –

cevap

1

Boolean'ı yaptığınız gibi değiştirebilirsiniz, ancak en iyi uygulamaları izlememek benim aklımdadır.

Geçerli sorun, while döngüsünden çıkmanızdır, bu nedenle runnable artık çalışmaz, boolean'ı true olarak değiştirir değiştirmez, artık çizim yapmaz.

Düzenleme: Kod temizlemek için yerine bir AtomicBoole kullanmanız önerilir.

+0

Ben böyle aptal bir hata göndermek için yorulmuş olabilir düşünüyorum. Teşekkür ederiz –

+0

Hepimiz olur :) Belki bunlara sahipsin ve sadece onları dahil etmiyorsun, ama bir ipucu biraz günlüğe sahip olmak olurdu. Örneğin: 1) Çalışırken girilebilir 2) Çalışabilirken çıkılıyor –

İlgili konular