这是我的问题:
当渲染具有速度的对象(即它移动)时,也会绘制对象的最后一帧,这意味着我最终会将对象绘制多次,而不是一个漂亮的移动动画。运动路径。
这是我的渲染方法(在游戏循环中):
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()和lockCanvas()之间永远不会保留Surface的内容,因此,必须写入Surface区域中的每个像素。" 〜取自文件
那为什么不发生这种情况呢?为什么画布没有被重新绘制而是保留了所有向导的框架?
提前致谢! ^ _ ^
答案 0 :(得分:0)
尝试添加:
public void render(Canvas canvas) {
canvas.drawBitmap(spriteSheet, position.x, position.y, null);
invalidate();
}
看看会发生什么。