هل من الممكن أداء التقديم النشط في جافا سوينغ دون أن يكون على EDT؟

StackOverflow https://stackoverflow.com/questions/1966707

سؤال

أنا أبحث في استخدام استراتيجية العازلة والتقنية التالية الموصوفة على جافادوك:

// Main loop
while (!done) {
 // Prepare for rendering the next frame
 // ...

 // Render single frame
 do {
     // The following loop ensures that the contents of the drawing buffer
     // are consistent in case the underlying surface was recreated
     do {
         // Get a new graphics context every time through the loop
         // to make sure the strategy is validated
         Graphics graphics = strategy.getDrawGraphics();

         // Render to graphics
         // ...

         // Dispose the graphics
         graphics.dispose();

         // Repeat the rendering if the drawing buffer contents 
         // were restored
     } while (strategy.contentsRestored());

     // Display the buffer
     strategy.show();

     // Repeat the rendering if the drawing buffer was lost
 } while (strategy.contentsLost());

}

سيكون من الرائع تجنب بتوقيت شرق الولايات المتحدة و invokeLater أو invokeAndWait عند أداء الرسوم المتحركة.

أسئلتي:

  • إذا كان هذا في تطبيق التأرجح ، فلا نحتاج إلى القلق بشأن وضع المكالمة show على EDT؟
  • هل يمكن لأي شخص آخر رؤية أي مشاكل باستخدام هذا في تطبيق التأرجح؟

كان هذا مستوحى من هذا إجابة مثيرة للاهتمام لبرمجة اللعبة.

هل كانت مفيدة؟

المحلول

بشكل عام ، لا. الطلاء على موضوع آخر غير موضوع إرسال الحدث (EDT) النتائج في القطع الأثرية غير المرغوب فيها ، على الرغم من أن النتائج قد تكون مقبولة. هذه مثال يوضح بعض المقايضات. أفضل الترتيب للاستخلاص على EDT باستخدام javax.swing.timer, ، لكن نهج أخرى من الممكن. أيضا ، من المستوى الأعلى الذي اخترته حاوية قد تنفذ بالفعل استراتيجية العازلة.

نصائح أخرى

كما ذكرت Trashdog ، ليس من الجيد القيام بذلك. قم بإنشاء مؤشر ترابط الرسوم المتحركة الخاصة التي سترسم صورة خارج الشاشة. ثم ادفعه إلى بعض الحامل. إذا تم تسمية PaintComponent بإحضار الصورة الحالية ورسمها على المكون. منتهي. انظر إلى نمط Rendezvous.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top