- Forum-Beiträge: 5
04.01.2011, 11:49:25 via Website
04.01.2011 11:49:25 via Website
ich habe um meine Programmierfähigkeiten etwas aufzubessern und dabei vllt. was sinnvolles zu schaffen angefangen ein Tower Defence Spiel für Android zu schreiben. Dabei bin ich soweit, dass es möglich ist über eine Karte zu scrollen und Türme zu platzieren. Auf der Karte existiert ein Raster, bei dem jede Zelle einfach einen bool Wert hat, ob ein Turm gesetzt wurde oder nicht und entsprechen einen Turm (bis jetzt in Form einer Ellipse) zeichnet. Zum Scrollen wird ein Offset entsprechend der Fingerbewegung gespeichert und das Hintergrundbild mit resize so geschnitten, dass es aussieht als wenn man darüber scrollt. Außerdem wird berechnet welche Zellen zur Zeit sichtbar sind und deren Draw Methode wird aufgerufen.
Der Code der onDraw Methode sieht so aus:
2 Bitmap resizedBackground = Bitmap.createBitmap(background, XOffset, YOffset, getWidth(), getHeight());
3 canvas.drawBitmap(resizedBackground, 0, 0, null);
4 int actViewRow = 0;
5 int actViewCell;
6 int X;
7 int Y;
8 for(int i = startRow; i < maxRow; i++){
9 actViewCell = 0;
10 Row = MapCells.get(i);
11 Y = actViewRow * CellSize - YScrollOffset;
12 for(int j = startCell; j<maxCell ;j++){
13 X = actViewCell * CellSize - XScrollOffset;
14 Row.get(j).draw(canvas, Paint, X, Y,showGrid);
15 actViewCell++;
16 }
17 actViewRow++;
18 }
Das Problem ist jetzt wenn ich scrolle, dann verschieben sich Türme und Hintergrund kurz gegeneinander. Es sieht also aus als wenn sich die Türme auf dem Hintergrund bewegen. Das passiert nur während des Verschiebens, also wird scheinbar immer erst der Hintergrund und dann die Türme neu gezeichnet und das im Abstand von ca 1/2 Sekunde oder weniger, aber deutlich sichtbar.
Meine Fragen sind:
1. Gibt es eine Möglichkeit den Hintergrund und die Türme gleichzeitig zu zeichnen, so das sie sich nicht gegeneinander verschieben ? ( aus einem Buffer oder so )
oder 2. liegt das Problem daran, dass ich das Bild jedes mal neu mit resize erzeuge und dadurch das Programm so stark ausbremse, dass es zur verschiebung kommt ? Wie kann ich das besser machen ?
3. Würde das ganze wesentlich besser laufen, wenn ich keinen Hintergrund zeichne, sondern jede Zelle ein Bitmap zeichnen lasse ?
Ich bin wie man sicherlich sieht kein erfahrener Javaprogrammierer und würd mich über jeden kleinen Hinweis freuen.
Vielen Dank im voraus.
— geändert am 04.01.2011, 11:52:46
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.