Как сделать массив или массив Rect - PullRequest
0 голосов
/ 25 мая 2011

Я схожу с ума, пытаясь понять это. Я пытаюсь создать массив или массив Rect (прямоугольники), чтобы я мог обновлять координаты и рисовать на экране (чтобы они двигались).

Прямо сейчас у меня есть отдельный класс под названием Fire, в котором я создаю новый прямоугольник на каждой итерации с новыми координатами в своем собственном методе onDraw (). В первой итерации метода onDraw () я добавляю новый Fire в массив.

В классе Огня у меня есть:

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

В классе просмотра у меня есть:

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);
    }
}

Я избавился от бессмысленных частей кода, но это важная вещь. Прямоугольник печатает, однако он также печатает все предыдущие местоположения, и я не понимаю, почему. Я пытался исправить это навсегда, и любая помощь, которую вы, ребята, могли бы дать, была бы очень признательна. Я смог реализовать это в Java легко, но Android вызывает у меня проблемы.

Заранее спасибо !!!

Ответы [ 2 ]

0 голосов
/ 25 мая 2011

Из кода вы добавляете новые прямоугольники в список, а затем рисуете каждый прямоугольник.Но из описания кажется, что вы просто хотите нарисовать один прямоугольник с обновленными координатами.

Вместо того, чтобы каждый раз создавать новый Rect, повторно используйте прямоугольник и обновите его координаты с помощью set(...). * 1006.*

Вторая проблема заключается в том, что вы устанавливаете i=0, а затем сразу же проверяете на i==0, что всегда будет истинно.Попробуйте что-то вроде этого:

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);

}
0 голосов
/ 25 мая 2011

При каждом вызове View.onDraw вы создаете новый огонь и добавляете его в свой список. Затем вы перебираете все огни и рисуете их. Таким образом, вы получаете все больше и больше пожаров. Все огни движутся одинаково или есть какой-то случайный компонент? Возможно, вы не видите предыдущие местоположения одного пожара, но на одном и том же пути движется много пожаров.

Хотите ли вы, чтобы 1 огонь двигался вокруг или все больше и больше огней двигались независимо?

...