2017-03-03 1 views
0

私はもう答えは必要ありません!更新キャンバスアニメーション

私はアプリを作成し、スクリーンの周りに泡が跳ね返るはずです。 すべて動作していますが、実際に描画されていません。ここで

コード(すべてではないコードが、重要なコード):

バブルクラス:

public class Bubble{ 

    private int ID; 

    private float coordX; 
    private float coordY; 
    private float velX; 
    private float velY; 
    private float radius; 

    private int color; 

    private boolean popped; 
    private boolean alive; 
    private boolean dead; 

    public Bubble(int coordX, int coordY, int velocityX, int velocityY, int ID, int color) { 
     this.coordX = coordX; 
     this.coordY = coordY; 
     this.velX = velocityX; 
     this.velY = velocityY; 
     this.radius = 30; 
     this.ID = ID; 
     this.color = color; 

     this.alive = true; 
    } 

    public void drawMe(Paint paint, Canvas canvas) { 
     int paintStartColor = paint.getColor(); 
     paint.setColor(this.color); 
     canvas.drawCircle(this.coordX, this.coordY, radius, paint); 
     paint.setColor(paintStartColor); 
     Log.d("Bubble","drawn bubble [" + ID + "] at (" + this.coordX + "|" + this.coordY + ")"); 
    } 

    public void update() { 

     //damit die bubble am rand anstößt und zurück prallt 
     if(this.coordX - this.radius <= 0) this.velX = - this.velX; 
     if(this.coordY - this.radius <= 0) this.velY = - this.velY; 
     if(this.coordX + this.radius >= MainActivity.getInstance().getScreenSize().x) this.velX = - this.velX; 
     if(this.coordY + this.radius >= MainActivity.getInstance().getScreenSize().y) this.velY = - this.velY; 

     coordX += velX; 
     coordY += velY; 
     updateRadius(); 
//  Log.d("Bubble", "CoordX: " + coordX + ", velX: " + velX); 
    } 
} 

描画方法:

public void drawBubbles() { 
    Paint paint = new Paint(); 
    for(Bubble b : bubbles) { 
     b.drawMe(paint, MainActivity.getInstance().getCanvas()); 
    } 
} 

そして、ゲームループ:

while(this.isRunning()) { 
     updateBubbles(); //update bubbles just calls the update() function in every bubble (for each loop) 
     drawBubbles(); 
     //...sleep... 
} 

のすべての泡を描画するには、それは動作しますが、私は(閉じていない!)アプリケーションを残して、それに戻って行くとき、私は違いを参照してください。私はループでメソッドを呼び出し、それは毎秒60回呼ばれますが、なぜそれが画面に表示されませんか?また、私はキャンバスを無効にすることはできません。

+0

私はBubbleクラスとゲームループを追加しました。十分だと思います...さらに多くのコードが必要な場合は教えてください – Finni

答えて

0

私はinvalidate()メソッドを誤って使用していたので、それを修正してもうまくいきました。

関連する問題