Closed Rina14 closed 3 years ago
Ich habe ein wenig reingeschaut und es ist am besten, wenn die Lösung auf Autorenseite hergestellt wird. Das Problem ist, dass die Positionen erst berechnet werden können, wenn Progress.go ausgeführt wird und damit die ganze Szenerie eingerichtet wurde. Beim Start des Programms sind die Dimensionen noch nicht bekannt, erst wenn alles fertig geladen wurde etc.
Also ist es am geschicktesten, wenn die Animation erst definiert wird, wenn sie gebraucht wird. Das erreicht man einfach, in dem man also nicht bei Programmstart ein Objekt definiert wird, sondern eine Funktion, die auf Anfrage ein solches Objekt definiert und liefert .Ich denke, das ist dann auch eine ganz gute Hinführung für die Leute um eigene Funktionen zu schreiben, mit denen sie dann auch ganz andere Problemstellungen lösen können.
Ich habe das mal in meinem Test eingebaut:
export function getAnimation(): ƒS.AnimationDefinition {
return {
start: { translation: ƒS.positions.bottomleft, rotation: -20, scaling: new ƒS.Position(0.5, 1.5), color: ƒS.Color.CSS("white", 0) },
end: { translation: ƒS.positions.bottomright, rotation: 20, scaling: new ƒS.Position(1.5, 0.5), color: ƒS.Color.CSS("red") },
duration: 1,
playmode: ƒS.ANIMATION_PLAYMODE.REVERSELOOP
};
}
und in einer Szene dann den Aufruf
await ƒS.Character.animate(characters.Sue, characters.Sue.pose.normal, getAnimation());
Mit Hilfe von Funktionsparametern kann man so auch ähnliche Animation leicht variieren.
Siehe #2
Möglichkeit schaffen, dass Animationen nur einmal definiert werden müssen, um diese in allen Szenen verwenden zu können.