عند إنشاء محرك الرسوم المتحركة رأينا أن تحديث الشاشة وميض ينتج غير مرغوب فيه. هو هذا التأثير بسبب الوقت اللازم لحذف الصورة وتوليد جديدة لتحديث, نتيجة لكائنات الأرواح.
واحد يسمى الأسلوب لتجنب هذا التخزين المؤقت المزدوج أو “دoublebuffered“, لذلك نحن نستخدم اثنين من الصور (ذاكرة الرسومات) في نفس الوقت. أثناء الرسم على, نحن نرى بعضنا البعض وتقليل وقت التغيير بين الصور القضاء على وميض.
في informática, تخزين عازلة متعددة هو استخدام عازلة أكثر من واحد للحفاظ على كتلة بيانات, ذلك أن “قارئ” سترى على نسخة كاملة من البيانات, بدلا من نسخة محدثة جزئيا من البيانات التي تم إنشاؤها من قبل “الكاتب”. كما انها تستخدم لتجنب الحاجة لاستخدام ثنائية المنفذ من ذاكرة الوصول العشوائي, عندما القراء والكتاب والأجهزة المختلفة.(ال)
تعديل الفئة “Blackboard” قمنا بتعديل لدمج محرك الرسوم المتحركة لتنفيذ هذه التقنية. Necesitaremos conocer las dimensiones de la pantalla gráfica para almacenar la suficiente memoria, y definiremos un objeto “صورة” que será sobre el que dibujaremos los gráficos.
Dimension d; private Image mImage = null;
الأسلوب “طلاء” de dibujo obtendrá primero el tamaño de la imagen a generar. La llamada a la función “checkOffScreenImage()” se encargará de asegurarnos un objeto “mImage” sobre el que dibujar.
Para dibujar en este objeto solicitaremos su dirección gráfica con la función “getGraphics“. A continuación lo rellenaremos del color que usemos para el fondo dibujando sobre este elemento un rectángulo relleno.
Llamaremos a las rutinas de dibujado de la imagen, que hemos implementado en la función “بينتوفسكرين” pasándole este objeto gráfico como parámetro para que lo use como lienzo.
La última función dibujará en pantalla el lienzo o imagen generado.
public synchronized void طلاء(الرسومات ز) { d = getSize(); checkOffScreenImage(); Graphics offG = mImage.getGraphics(); offG.setColor(getBackground()); offG.fillRect(0, 0, d.width, d.height); بينتوفسكرين(mImage.getGraphics()); g.drawImage(mImage, 0, 0, null); }
La función “checkOffScreenImage()” se encargará de supervisar si ha cambiado el tamaño de la ventana utilizada para mostrar la información gráfica y generar un objeto sobre el que dibujar, mediante la función “createImage()“
الفراغ خاصة checkOffScreenImage() { Dimension d = getSize(); إذا (d.width == 0 || d.height == 0) { return; } إذا (mImage == null || mImage.getWidth(null) != d.width || mImage.getHeight(null) != d.height) { mImage = createImage(d.width, d.height); } }
La función “paintOffScree” es la antigua función o método “طلاء” que dibuja nuestros objetos gráficos, por lo que no merece comentarios adicionales. Simplemente hemos cambiado su nombre.
باطل العامة بينتوفسكرين(الرسومات ز){ Enumeration enum=bd.elements(); Object ob; while(enum.hasMoreElements()){ ob=enum.nextElement(); إذا(OB instanceof سيمبليدراوابل){ ((سيمبليدراوابل) ob).طلاء(ز); } } }
Al ejecutar la aplicación veremos que el parpadeo de la imagen ha desaparecido.
يجب أن يكون متصل لإضافة تعليق.