Libgdx: يجب أن تعيد getRawDeltaTime () القيمة 0 عند تغيير setContinuousRendering () من خطأ إلى صحيح

تم إنشاؤها على ٢٨ ديسمبر ٢٠١٣  ·  3تعليقات  ·  مصدر: libgdx/libgdx

في معظم الخلفيات الخلفية ، لا توجد طريقة لإعادة ضبط 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 على صفر عند التغيير إلى العرض المستمر بحيث يتطابق الإطار _ الجديد الأول مع الإطار الأول من الرسم المتحرك (وليس الإطار الأخير):

  • مع طريقة setContinousRendering () لكل خلفية
  • مع setDeltaTime () الجديدة و setRawDeltaTime ()

أنا أفعل ذلك من خلال الاستبطان الذي ليس طريقة جيدة حقًا ولكنه يوفر لي الكثير من عمر البطارية ويحافظ على الرسوم المتحركة.

ماذا تعتقد ؟

التعليق الأكثر فائدة

يمكنك (ويجب) تحديد وقت دلتا إلى أقصى قيمة.

شاهد كيف يتم ذلك في https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java

ال 3 كومينتر

يمكنك (ويجب) تحديد وقت دلتا إلى أقصى قيمة.

شاهد كيف يتم ذلك في https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ActionTest.java

هذا حل جيد!

جرب هذا
maxtime = 0.2f
دلتا = دلتا> maxTime؟ maxTime: دلتا.
يتخطى عند 5 إطارات بحد أقصى إذا حصلت على 30 إطارًا في الثانية (الحد الأدنى المسموح به للحركة السلسة)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات