Lassen Sie mich zunächst mein Ziel erklären. Ich versuche, eine Animation
die die Eigenschaften eines ArcShape
. Eine ArcShape's
Konstruktor benötigt zwei Felder: startAngle
y sweepAngle
. Ich möchte die Animation sweepAngle
so dass er auf dem Bildschirm als kontinuierlich schrumpfender Kreis erscheint.
Sie können sich diese Animation vorstellen, indem Sie sich PacMan vorstellen. Stellen Sie sich vor, sein Mund ist geschlossen. Diese Animation wäre so, als würde er seinen Oberkiefer immer weiter öffnen, bis kein PacMan mehr da ist.
Nun... Ich habe ein paar Probleme mit der Umsetzung dieser. Erstens, sobald ein ArcShape
erstellt wird, gibt es keine eingebauten Methoden, um den Wert zu ändern. sweepAngle
. Das bringt mich zu meiner ersten Frage: Gibt es eine Möglichkeit, die ArcShape
und implementieren einige setSweepAngle
Methode? Oder muss ich eine new ArcShape
für jede sweepAngle
die ich anzeigen möchte?
Nun zum zweiten Problem... Angenommen, ich habe eine Lösung für das erste Problem gefunden, wie könnte ich diese erstellen Animation
? Das ist das Wesentliche, was ich jetzt habe:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape's sweepAngle to currAngle. But HOW?
}
}