Ich habe den Beispielcode für die GestureListener
Klasse gefunden, aber ich verstehe die Zoom-Methode nicht:
private float initialScale = 1;
public boolean zoom (float originalDistance, float currentDistance) {
float ratio = originalDistance / currentDistance; //I get this
camera.zoom = initialScale * ratio; //This doesn't make sense to me because it seems like every time you pinch to zoom, it resets to the original zoom which is 1. So basically it wouldn't 'save' the zoom right?
System.out.println(camera.zoom); //Prints the camera zoom
return false;
}
Interpretiere ich dieses Recht nicht?
zoomStart(float distance)
und einezoomStop(float initialDistance, float finalDistance)
Methode benötigenAntworten:
Jedes Mal, wenn Sie Ihre Finger auf den Bildschirm legen,
originalDistance / currentDistance
ergibt sich der Wert 1.Wenn Sie diesen Wert direkt verwenden, beginnt der Zoom immer bei zoom = 1.0f.
Um dieses Problem zu beheben, sollten Sie den aktuellen Zoomfaktor zu Beginn des Zooms speichern und diesen mit dem neu berechneten Verhältnis multiplizieren. Also: auf touchDown den aktuellen Zoom nehmen :
initialScale = Camara.zoom;
.quelle
initialScale
sieht aus wie eine Konstante, mit der alles im Spiel skaliert wird.zoom
Die Funktion berechnet denoriginalDistance / currentDistance
Wert, wendet ihn auf die Kamera an und druckt ihn aus.Es ist schwer, mehr zu erzählen, ohne anderen betroffenen Code zu sehen.
quelle