Ho una funzione che accetta una bitmap senza interruzioni e la scorre sullo schermo in qualsiasi direzione utilizzando le coordinate del mondo. Ci sono 4 pareggi (l'area di gioco è più piccola della dimensione totale della bitmap. Quindi al massimo vedrai 4 copie della bitmap, solo sezioni diverse disegnate per mantenere l'effetto continuo). Quello che voglio sapere è, dovrei applicare le modifiche ai limiti del rect in modo tale che si limitino a omettere le parti che dovrebbe sullo schermo? O dovrei lasciarlo gestire da Android? E se lo faccio da solo, come dovrei gestirlo? Il mondo coordina e traduce davvero mi confonde, per quanto riguarda la matematica. :/Devo fare affidamento su Android per scartare i disegni fuori schermo?
Ecco il codice.
public void draw(Canvas canvas){
oCoords.x=(int) fX;
oCoords.y=(int) fY;
oTopLeft = gridContainingPoint(oCoords);
oTopRight.x = gridContainingPoint(oCoords).x + iWidth;
oTopRight.y = gridContainingPoint(oCoords).y;
oBottomLeft.x = gridContainingPoint(oCoords).x;
oBottomLeft.y = gridContainingPoint(oCoords).y + iHeight;
oBottomRight.x = gridContainingPoint(oCoords).x + iWidth;
oBottomRight.y = gridContainingPoint(oCoords).y + iHeight;
canvas.save();
canvas.translate(-fX, -fY);
oCloud.setBounds(oTopLeft.x, oTopLeft.y, oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight);
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y, oTopLeft.x + (this.iImageWidth * 2), oTopLeft.y + this.iImageHeight);
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x, oTopLeft.y + this.iImageHeight, oTopLeft.x + this.iImageWidth, oTopLeft.y + (this.iImageHeight * 2));
oCloud.draw(canvas);
oCloud.setBounds(oTopLeft.x + this.iImageWidth, oTopLeft.y + this.iImageHeight, oTopLeft.x + (this.iImageWidth * 2),oTopLeft.y + (this.iImageHeight * 2));
oCloud.draw(canvas);
canvas.restore();
}