SurfaceView Bitmap bei bestimmten Bedingungen ändern

  • Antworten:4
Darkside96
  • Forum-Beiträge: 18

23.04.2014, 20:40:16 via Website

Hallo Leute, Ich habe mit Hilfe eines Buches ein kleines Spiel programmiert, bei dem Objekte aus Löchern kommen und wieder verschwinden und man sie antippen muss, um punkte zu kriegen. Erwischt man sie 10 mal nicht, hat man verloren. Den Code habe ich bereits umgesetzt und alles funktioniert, wie es sein soll. Jetzt kam mir die Idee verschiedene Bilder von diesen Objekten zu nehmen. Also, dass wenn man ein Objekt zerstört hat, ein neues, anderes Bild gezeichnet wird. Das ganze wollte ich mit der Random Methode zufällig erscheinen lassen. Bei dem Spiel werden am Anfang in der Draw-Methode die Bilder der Objekte gezeichnet. Diese werden dann später nacheinander rausbewegt, wenn sie die maximale Höhe erreichthaben, wieder reinbewegt. Ich habe es versucht ein Bitmaparray und eine "bitmapzahl"-variable zu deklarieren. Die Bitmapzahl verändert sich durch die Randommethode, wenn ein Objekt reingeschoben, oder zerstört wurde. Und beim zeichnen des Bitmaps steht dann z.B. bitmap[bitmapzahl]. Eine schöne Methode, dacht ich mir, jedoch will die drawBitmap-Methode einen Bitmap dort stehen haben und keinen Teil eines Bitmaparrays. Also dachte ich weiter nach und kam darauf eine switch-schleife von der bitmapzahl am anfang der Draw-Methode einzubauen und das zu zeichnende Bitmap z.B. bei case 1: mit Bitmap1 zu überschreiben und bei case 2: mit Bitmap 2. Es hat wohl geklappt, dass sich das Bitmap alle 10 millisikunden ändert, aber ich habe es nicht hingekriegt, dass es sich nur ändern soll, wenn das vorherige verschwunden ist. Hat jemand eine Idee, wie ich das am Besten machen könnte? Ich denke den Code braucht ihr dafür nicht, da die Beschreibung des Problems genug aussagt. Wenn ihr jedoch nicht ohne auskommt, dann sagt mir bescheid. Ich danke schonmal für eure Hilfe :) LG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.04.2014, 20:47:21 via Website

drawBitmap-Methode einen Bitmap dort stehen haben und keinen Teil eines Bitmaparrays

Wieso denn nicht? Natürlich kannst du auch eine Methode Schreimen, die dir das Bitmap ausgibt, etwa so:

public Bitmap getBitmap(int index) //Der Index ist deine Random Zahl

{

return bitmaparray[index]; }

Aber ob das das ist, was du suchst, bwzweifle ich. Zudem ist die Methode mit dem switch ineffizient, da du, wenn du ein neues Bild hinzufügst einen kompletten case Bklock schreiben musst, bei der Array Methode musst du das Bild nur zum array hinzufügen. Aber pass bei deinem Vorhaben auf die Recourcen auf, sonst fliegt ne out Of Memory Exception (oder so was in der Art)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Darkside96
  • Forum-Beiträge: 18

23.04.2014, 21:04:17 via Website

@Pascal P. Weil bei den Parametern ein Bitmap angegeben ist. Alles andere ist unzulässig. Ja stimmt das werde ich mal ausprobieren. Für einen Teil meines Vorhabens reicht es schon aus, Danke :) Ja ich werde aufpassen:D Kann ja auch immer Kontrollieren obs der Fall ist:D LG

Antworten
Darkside96
  • Forum-Beiträge: 18

23.04.2014, 21:39:59 via Website

Ok diese Methode funktioniert auch nicht wirklich. Aber trotzdem Danke :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.04.2014, 21:43:06 via Website

Wieso funktioniert das nicht? Die Methode gibt dir ein Bitmap zurück, anhand des aktuellen Indexes (der nicht höher als die Anzahl der Array Elemente sein darf) Dann müsste was in deinem restlichen code falsch sein. Was ist es denn für ein Problem?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten