Ich habe versucht, einige Sprite-Animation in Android zu tun (es ist eine College-Übung), aber ich habe ein seltsames Problem. Anstatt das Rechteck zu zeichnen, das ich als Quelle definiert habe, zeichnet es genau die Hälfte dieses Rechtecks.Canvas.drawBitmap Schneidequelle in der Hälfte
Hier ist der Code für meine Ziehverfahren
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);
}
Hier ist das Bild, das ich bin mit
Alle Rahmen sind gleich groß (44x40), und das Bild ist 440x80, und ich gebe diese Wert als frameSize, wenn ich die Methode aufrufen.
Punkt ist im Grunde ein Objekt, das ein Paar x, y enthält.
Vector2 ist ein Objekt, das ein Paar x, y Floats enthält.
Ich render auch etwas Text für Debug-Zwecke.
Hier sind ein paar Screenshots:
Es tut mir leid, die Screenshots sind enorm. Ich weiß nicht, ob es einen Weg gibt, in Stackoverflow sie kleiner zu zeigen
beobachtbare Teil gefährlich aussieht. Sie sollten den Code woanders ablegen und auf das Abonnement achten. Vielleicht starten Sie in OnAttach eine Abmeldung in OnDetach oder auf Sichtbarkeitswechsel. –