Universal Tween Engineで何かを計算できる唯一の要件は、作成したTweens
とTimelines
が定期的に (フレームごとに) 更新されることです。
ほとんどの場合、a を使用しTweenManager
てすべてのトゥイーンの更新プロセスを処理する必要があります。したがって、.update()
各フレームでマネージャーのメソッドを呼び出すだけで済みます。Android ゲームの場合、すべてのゲームに「ゲーム ループ」、つまり各フレームで世界を再計算して再描画する無限ループがあるため、これは非常に簡単です。したがって、必要なことは、このループに manager update 呼び出しを挿入することだけです。ただし、純粋な android UI アプリケーションはループを公開しないため、更新呼び出しをどこにでも挿入することはできません。
ただし、内部に無限ループを含む別のスレッドを作成し、その中に manager.update() メソッドを配置する必要があります。それはそよ風なしで動作するはずです:)
まず、マネージャーをどこかに作成する必要があります。
private final TweenManager tweenManager = new TweenManager();
あなたのアクティビティの onPause() メソッドでアニメーションを停止するためのブール値と同様に:
private boolean isAnimationRunning = true;
次に、スレッドを作成する必要があります (たとえば、Activity コンストラクターで)。
new Thread(new Runnable() {
private long lastMillis = -1;
@Override
public void run() {
while (isAnimationRunning) {
if (lastMillis > 0) {
long currentMillis = System.currentTimeMillis();
final float delta = (currentMillis - lastMillis) / 1000f;
view.post(new Runnable() {) {
@Override public void run() {
tweenManager.update(delta);
}
};
lastMillis = currentMillis;
} else {
lastMillis = System.currentTimeMillis();
}
try {
Thread.sleep(1000/60);
} catch(InterruptedException ex) {
}
}
}
}).start();
次に、Android UI コードのどこにでもトゥイーンを作成できます。ご覧のとおり、更新呼び出しは で囲まれているview.post()
ため、更新はメインの Android UI スレッドで行われるため、同期の問題は発生しません。
ゲーム以外でエンジンを試したことはありませんが、このソリューションは問題なく動作するはずです。