Я пытаюсь запрограммировать небольшую игру для Android, и когда я рисую растровое изображение и анимирую его с помощью Sprites, я вижу след в изображении! (это изображение PNG). Я знаю, что это не проблема спрайтов, потому что я использовал статическое изображение, движущееся вдоль оси X, и я все еще мог видеть след
Это код, который я использовал для загрузки изображения:
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);
Как я могу его устранить, чтобы каждый раз видеть только одного из спрайтов?
Спасибо вам заблаговременно!
Похоже, вам нужно очистить фон до того, как вы нарисуете свой спрайт. Вызов 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);
}
Ну, это было очень глупо: вместо
@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);
}
Спасибо большое за ответы, потому что я действительно не был уверен, почему все это нужно сделать, так что вы оба очень помогли!
Выполняете ли вы это в SurfaceView
или Canvas
?
С SurfaceView
Я считаю, что вам нужно вручную очистить части чертежа, который вы хотите удалить.