Вот моя проблема:Android Canvas сохраняет предыдущее состояние, когда объект движется
При визуализации объекта, который имеет скорость (т.е. она движется), последний кадр объекта обращается также, что означает, что вместо того, чтобы приятно движущейся анимации, я получаю объект, нарисованный несколько раз по его траектории движения.
Вот мой метод визуализации (в цикле игры):
private void render() {
//if the surface is NOT valid, exit rendering
if (!surfaceHolder.getSurface().isValid()){
return;
}
//lock the canvas
canvas = surfaceHolder.lockCanvas();
//draw all game objects to canvas (only 1 object atm)
wizard.render(canvas);
//unlock and post the canvas
surfaceHolder.unlockCanvasAndPost(canvas);
}
и мастер визуализации:
public void render(Canvas canvas) {
canvas.drawBitmap(spriteSheet, position.x, position.y, null);
}
Насколько я знаю, между каждой разблокировки и блокировки поверхности, его содержимое не сохраняется, что означает, что он полностью перерисовывается каждый раз, когда вызывается функция рендеринга:
«Содержимое поверхности никогда не сохраняется между unlockCanvas() и lockCanv as(), по этой причине, каждый пиксель в области поверхности должен быть записан ». ~ взято из документации
Так почему же это не происходит? Почему холст не перерисовывается и вместо этого сохраняет все кадры мастера?
Заранее благодарен!^_^
Это не работает. Мастер не является представлением, это пользовательский класс I, поэтому метод invalidate не существует ... – Tirafesi