Все ли игры для Android используют один холст? - PullRequest
1 голос
/ 08 марта 2012

Должны ли все объекты View перерисовываться при каждой процедуре onDraw ()?

Я исходил из фона Flash, поэтому моей первоначальной мыслью было нарисовать статические фоновые изображения на одном слое / холсте, а затем создать еще один слой поверх него для обработки более активной анимации, но это не кажется очень практичным для настроить. Неужели мой ход мыслей за Android View.onDraw () введен в заблуждение и это то, о чем я даже не должен беспокоиться?

Редактировать: Чтобы немного подробнее разобраться в том, что я пытаюсь выяснить, с помощью концепции onDraw () - есть ли способ использовать несколько холстов в SurfaceView / View, которые будут действовать как слои, чтобы я мог рисовать вручную на каждом отдельном холсте (чтобы минимизировать то, что нужно «перерисовать») без необходимости «перерисовывать» графику на других полотнах, или onDraw () SurfaceView / View абсолютно необходим для обновления любых визуальных изменений (в этом случае все перерисовывается на экран)?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

В: Следует ли перерисовывать все объекты View при каждой процедуре onDraw ()?

A: Нет - не обязательно

ТАКЖЕ: обязательно взгляните на SurfaceViews:

http://developer.android.com/reference/android/view/SurfaceView.html

0 голосов
/ 08 марта 2012

ну, может быть, не все , но Canvas можно считать сценой. Я использую класс Toon, содержащий координаты X, Y, хитбокс Rect и Drawable. Этот класс Toon также имеет метод:

public draw(Canvas c) {
    mDrawable.setBounds(mHitBox);
    mDrawable.draw(c);
}

Затем в методе onDraw(Canvas c) в игровом цикле я просто перебираю все свои объекты Toon и вызываю для них метод draw(c). Старайтесь не манипулировать объектами в onDraw, в идеале они должны только рисоваться.

...