【问题标题】:Image trail when moving bitmap in Android在Android中移动位图时的图像轨迹
【发布时间】:2011-03-30 20:28:53
【问题描述】:
我正在尝试为 Android 编写一个小游戏,当我绘制位图并使用 Sprites 对其进行动画处理时,我可以在图像中看到一条轨迹! (这是一个PNG图像)。
我知道这不是精灵的问题,因为我使用了沿 X 轴移动的静态图像,我仍然可以看到轨迹
这是我用来加载图像的代码:
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);
我怎样才能消除它,这样我每次只能看到一个精灵?
非常感谢您!
【问题讨论】:
标签:
android
graphics
animation
sprite
【解决方案1】:
看起来您需要在每次绘制精灵之前清除背景。在你的 Canvas 上调用 drawColor 应该可以做到这一点,就像
Canvas c = null;
try {
c = surfaceHolder.lockCanvas(null);
synchronized(surfaceHolder) {
c.drawColor(Color.BLACK);
c.draw(bmp, posX, posY, null);
}
} finally {
if(c != null)
surfaceHolder.unlockCanvasAndPost(c);
}
【解决方案2】:
嗯,这是一件非常愚蠢的事情:
而不是
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(***Color.BLACK***);
sprite.onDraw(canvas);
}
我做了一个
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(***color.black***);
sprite.onDraw(canvas);
}
非常感谢两位的回答,因为我真的不知道为什么必须完成所有这些,所以你们俩实际上都帮了很多忙!
【解决方案3】:
您是在SurfaceView 还是Canvas 中执行此操作?
对于SurfaceView,我相信您必须手动清除您想要消失的绘图部分。