في معظم الخلفيات الخلفية ، لا توجد طريقة لإعادة ضبط detlaTime ... يؤدي هذا إلى استحالة التبديل من العرض غير المستمر إلى العرض المستمر عند الحاجة إلى رسم متحرك (خاصة عند تحريك القوائم في scene2d.ui). على سبيل المثال ، عند تعيين رسم متحرك مثل هذا:
final TextButton button = new TextButton("New Game", textButtonStyle);
button.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug("TestApplication", "button clicked");
MoveToAction outAction = Actions.action(MoveToAction.class);
outAction.setPosition(0, 0);
outAction.setDuration(.5f);
outAction.setInterpolation(Interpolation.pow2Out);
button.addAction(Actions.sequence(outAction, Actions.run(new Runnable() {
<strong i="6">@Override</strong>
public void run() {
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
}
})));
Gdx.graphics.setContinuousRendering(true);
}
});
عند الضغط على الزر في العرض غير المستمر ، يتم تحديث المظهر ولكن إذا أدى الحدث الأعلى إلى حدث النقر بعد ثانية واحدة من الحدث السفلي ، فإن getDeltaTime () أكبر من مدة الرسوم المتحركة ... ليس له أي تأثير ويتم الانتهاء من الرسوم المتحركة فورًا.
أرغب في الحصول على طريقة لضبط deltaTime على صفر عند التغيير إلى العرض المستمر بحيث يتطابق الإطار _ الجديد الأول مع الإطار الأول من الرسم المتحرك (وليس الإطار الأخير):
أنا أفعل ذلك من خلال الاستبطان الذي ليس طريقة جيدة حقًا ولكنه يوفر لي الكثير من عمر البطارية ويحافظ على الرسوم المتحركة.
ماذا تعتقد ؟
يمكنك (ويجب) تحديد وقت دلتا إلى أقصى قيمة.
شاهد كيف يتم ذلك في https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java
هذا حل جيد!
جرب هذا
maxtime = 0.2f
دلتا = دلتا> maxTime؟ maxTime: دلتا.
يتخطى عند 5 إطارات بحد أقصى إذا حصلت على 30 إطارًا في الثانية (الحد الأدنى المسموح به للحركة السلسة)
التعليق الأكثر فائدة
يمكنك (ويجب) تحديد وقت دلتا إلى أقصى قيمة.
شاهد كيف يتم ذلك في https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java