J'ai essayé de faire une animation de sprite sous Android (c'est un exercice d'université), mais j'ai un problème étrange. Au lieu de dessiner le rectangle que j'ai défini comme source, il dessine exactement la moitié de ce rectangle.Canvas.drawBitmap couper la source en deux
est ici le code de ma méthode de dessin
public class Sprite {
Bitmap image;
Point frameSize;
int[] rows;
public int curFrame;
public int curRow;
public void draw(Canvas c, Paint p, Vector2 pos)
{
Rect src;
int left = curFrame * frameSize.x;
int top = curRow * frameSize.y;
int right = left + frameSize.x;
int bottom = top + frameSize.y;
src = new Rect(left, top, right, bottom);
Rect dest = new Rect((int)pos.x, 0, (int)pos.x + frameSize.x, frameSize.y);
c.drawBitmap(image, src, dest, p);
}
Voici l'image que je suis en utilisant
Tous les cadres sont de taille égale (44x40), et l'image est 440x80, et je donne ce valeur en tant que frameSize lorsque j'appelle la méthode. Point est fondamentalement un objet qui contient une paire de x, y ints.
Vector2 est un objet qui contient une paire de x, y flottants. Je rends également du texte à des fins de débogage.
Voici quelques captures d'écran:
Je suis désolé, les captures d'écran sont énormes. Je ne sais pas s'il y a un moyen de les montrer plus petits dans StackOverflow
Cette partie Observable semble dangereux. Vous devriez mettre ce code ailleurs et regarder pour l'abonnement. Peut-être commencer observable dans onAttach un désinscription dans onDetach ou sur le changement de visibilité. –