Android Frame by Frame

RobJava

Mitglied
hey :)
Ich wollte fragen, ob man bei einer Frame by Frame Animation nur das letzte Bild (Frame) löschen kann?
Und nicht übermalen muss, also nicht wie ich canvas.drawRGB(254, 254, 254); benutzt oder ein Rechteck drüberlegt. Geht das?

Vielen Dank :)

Java:
	public void onDraw(Canvas canvas,int bewegung) {
		// TODO Auto-generated method stub
		
	
		update();
			
	Rect scr= new Rect(sx,0,sx+breite,sy);
	Rect dcr= new Rect(0+b,canvas.getHeight()-m.getHeight()-höhe,
		b+breite,canvas.getHeight()-m.getHeight());
	canvas.drawRGB(254, 254, 254);       
	canvas.drawBitmap(m, scr, dcr, null);

	holder.unlockCanvasAndPost(canvas);
	holder.lockCanvas();
	
	
	}
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
Normalerweise löst man das so:

- Routine für Spiellogik, Berechnung etc. in Thread auslagern => Game Loop
- Die Game Loop ruft periodisch die onDraw Methode auf. Dafür nutzt man am besten eine SurfaceView da diese für so asynchrone Geschichten gedacht ist. Beispielimplementation siehe hier.
- Die Szenarie zeichnest du nicht direkt auf den Canvas (das würde flackern) sondern in ein BMP. Das muss vor jedem Zeichenaufruf mit allen Elementen neu bemalt werden. Da kannst du aber immer schon auch für den nächsten Frame das BMP vorbereiten. (Double Buffering)
- Die Elemente sollten so gestaltet werden, dass du sie auf den jeweiligen Bildschirm anpasst. Damit die Grafiken auf jedem Gerät ähnlich aussehen.
 

RobJava

Mitglied
Ja ist ziemlich ähnlich, ich will das die Animation bei Knopfdruck ausgelöst wird und komplett durchläuft...wie kann man das machen?
Danke :)
 

schlingel

Gesperrter Benutzer
In dem Fall nimmst du einen Thread her, der per Knopfdruch gestartet wird und eben die Animation in Form einer Schleife realisiert. Mit dem Unterschied zu einer normalen Game Loop, dass er nach den Schritten die nötig sind für die Animation, sich beendet.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben