0

私はこれを理解しようとして夢中になっています。座標を更新して画面上に描画できるRect(長方形)の配列または配列リストを作成しようとしています(それらを移動させるため)。

現在、Fire という別のクラスがあり、独自の onDraw() メソッドで新しい座標を使用して反復ごとに新しい長方形を作成します。ビューの onDraw() メソッドの最初の繰り返しで、新しい Fire を arraylist に追加します。

Fireクラスには次のものがあります:

public void onDraw(Canvas canvas){
    moveF();
    Rect r = new Rect(_l,_t,_r,_b);
    canvas.drawRect(r, paint);
}

View クラスには次のものがあります。

protected void onDraw(Canvas canvas) {
    int i = 0;
    canvas.drawColor(Color.WHITE);
    if(i==0){
        fires.add(new Fire(20,100,40,120));
        i++;
    }
    for(Fire fire : fires){
        fire.onDraw(canvas);
    }
}

コードの無意味な部分を取り除きましたが、これは重要なことです。Rectangle は印刷されますが、以前のすべての場所も印刷され、その理由がわかりません。私はこれを永遠に修正しようとしてきました。これをJavaで簡単に実装できましたが、Androidで問題が発生しています。

前もって感謝します!!!

4

2 に答える 2

0

コードから、新しい四角形をリストに追加し、各四角形を描画します。しかし、説明から、更新された座標で単一の長方形を描画したいだけのようです。

毎回新しい Rect を作成する代わりに、長方形を再利用し、その座標を で更新しset(...)ます。

2 番目の問題は、設定i=0してすぐに をチェックするi==0ことです。これは常に true です。代わりに次のようにしてみてください。

static final Rect rect = new Rect();

// your code here

protected void onDraw(Canvas canvas) {
    canvas.drawColor(Color.WHITE);

    moveF();
    rect.set(_l,_t,_r,_b);
    canvas.drawRect(rect, paint);

}
于 2011-05-24T20:24:47.267 に答える
-1

View.onDraw を呼び出すたびに、新しい火を作成してリストに追加します。次に、すべての火を反復処理して描画します。だからどんどん火がつく。すべての火災は同じように動きますか、それともランダムな要素がありますか? 1 つの火災の以前の場所が表示されていない可能性がありますが、同じ経路を移動している多数の火災がある可能性があります。

1 つの炎を動かしたいですか、それとも独立して動き回る炎を増やしたいですか?

于 2011-05-24T20:22:35.777 に答える