By: Charles in J2ME Tutorials on 2007年09月17日 [フレーム]
Double buffering is a technique used to avoid flickering when rendering graphics in J2ME applications. The basic idea is to create an off-screen image and draw everything to that image, and then draw the final image to the screen. This way, the final image appears all at once and there is no flicker caused by the screen being partially updated.
Here's a sample program that demonstrates double buffering in J2ME:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
public class DoubleBufferingDemo extends MIDlet {
private Display display;
private MyCanvas canvas;
public void startApp() {
display = Display.getDisplay(this);
canvas = new MyCanvas();
display.setCurrent(canvas);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
private class MyCanvas extends Canvas {
private int x = 0;
private int y = 0;
public void paint(Graphics g) {
// Create an off-screen image and graphics context
int w = getWidth();
int h = getHeight();
int[] buf = new int[w * h];
Graphics offscreen = Graphics.createImageGraphics(buf, w, h);
// Draw everything to the off-screen graphics context
offscreen.setColor(0xffffff);
offscreen.fillRect(0, 0, w, h);
offscreen.setColor(0xff0000);
offscreen.drawLine(0, 0, x, y);
// Draw the final image to the screen
g.drawRGB(buf, 0, w, 0, 0, w, h, true);
}
public void keyPressed(int keyCode) {
// Move the line based on user input
switch (getGameAction(keyCode)) {
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
case UP:
y--;
break;
case DOWN:
y++;
break;
}
// Repaint the canvas
repaint();
}
}
}
This program creates a custom Canvas that uses double buffering to draw a line on the screen that can be moved using the arrow keys. The paint() method creates an off-screen image using an integer buffer, draws the line to the off-screen graphics context, and then draws the final image to the screen. The keyPressed() method updates the position of the line and then repaints the canvas to show the new position.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Most Viewed Articles (in J2ME )
Play a multimedia file in J2ME Program (Audio/Video) using MMAPI
Adding your own Application icon for your J2ME application (jar file)
Client Server in J2ME (Socket Programming sample)
GUI components and menu based J2ME Applications.
Code sample to Send SMS from a J2ME application.
Datagrams in J2ME (UDP Programming sample)
Using HttpConnection in J2ME (Retrieve web content from a website to a phone)
RMSCookieConnector - Using Cookies in J2ME
Using HTTP vs UDP vs Socket in J2ME
lists, forms, choices, gauges, text fields, text boxes in J2ME
Latest Articles (in J2ME)
GUI components and menu based J2ME Applications.
Code sample to Send SMS from a J2ME application.
Adding your own Application icon for your J2ME application (jar file)
Play a multimedia file in J2ME Program (Audio/Video) using MMAPI
Datagrams in J2ME (UDP Programming sample)
Client Server in J2ME (Socket Programming sample)
Using HttpConnection in J2ME (Retrieve web content from a website to a phone)
Using HTTP vs UDP vs Socket in J2ME
RMSCookieConnector - Using Cookies in J2ME
POST UTF-8 encoded data to the server in J2ME
Using alerts and tickers in J2ME
lists, forms, choices, gauges, text fields, text boxes in J2ME
GUI components and menu based J2ME Applications.
Code sample to Send SMS from a J2ME application.
Adding your own Application icon for your J2ME application (jar file)
Play a multimedia file in J2ME Program (Audio/Video) using MMAPI
Datagrams in J2ME (UDP Programming sample)
Client Server in J2ME (Socket Programming sample)
Using HttpConnection in J2ME (Retrieve web content from a website to a phone)
Using HTTP vs UDP vs Socket in J2ME
RMSCookieConnector - Using Cookies in J2ME
POST UTF-8 encoded data to the server in J2ME
Using alerts and tickers in J2ME
lists, forms, choices, gauges, text fields, text boxes in J2ME
© 2023 Java-samples.com
Tutorial Archive: Data Science React Native Android AJAX ASP.net C C++ C# Cocoa Cloud Computing EJB Errors Java Certification Interview iPhone Javascript JSF JSP Java Beans J2ME JDBC Linux Mac OS X MySQL Perl PHP Python Ruby SAP VB.net EJB Struts Trends WebServices XML Office 365 Hibernate
Latest Tutorials on: Data Science React Native Android AJAX ASP.net C Cocoa C++ C# EJB Errors Java Certification Interview iPhone Javascript JSF JSP Java Beans J2ME JDBC Linux Mac OS X MySQL Perl PHP Python Ruby SAP VB.net EJB Struts Cloud Computing WebServices XML Office 365 Hibernate