WEB开发网
开发学院软件开发Java 使用指针事件在Canvas上绘画 阅读

使用指针事件在Canvas上绘画

 2007-12-23 12:37:51 来源:WEB开发网   
核心提示:import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class Doodle extends MIDlet{PRivate Displaydisplay; // The displayprivate DoodleCanv
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Doodle extends MIDlet
{
 PRivate Display display;    // The display
 private DoodleCanvas canvas;  // Canvas 
 public Doodle()
 {
  display = Display.getDisplay(this);
  canvas = new DoodleCanvas(this);
 }
 protected void startApp()
 {
  display.setCurrent( canvas );
 }
 protected void pauseApp()
 { }

 protected void destroyApp( boolean unconditional )
 { }
 public void exitMIDlet()
 {
  destroyApp(true);
  notifyDestroyed();
 }
}

/*--------------------------------------------------
* Class DoodleCanvas
*
* Pointer event handling
*-------------------------------------------------*/
class DoodleCanvas extends Canvas implements CommandListener
{
 private Command cmExit;     // Exit midlet
 private Command cmClear;     // Clear display
 private int startx = 0,  // Where pointer was clicked
       starty = 0,
       currentx = 0, // Current location
       currenty = 0;
 private Doodle midlet;
 private boolean clearDisplay = false;

 /*--------------------------------------------------
 * ConstrUCtor
 *-------------------------------------------------*/
 public DoodleCanvas(Doodle midlet)
 {
  this.midlet = midlet;
  // Create exit command & listen for events
  cmExit = new Command("Exit", Command.EXIT, 1);
  cmClear = new Command("Clear", Command.SCREEN, 1);  
  addCommand(cmExit);
  addCommand(cmClear);
  setCommandListener(this);
 } 

 /*--------------------------------------------------
 * Paint the text representing the key code 
 *-------------------------------------------------*/
 protected void paint(Graphics g)
 {
  // Clear the background (to white)
  if (clearDisplay)
  {
   g.setColor(255, 255, 255);
   g.fillRect(0, 0, getWidth(), getHeight());
   clearDisplay = false;
   startx = currentx = starty = currenty = 0;
   return;
  }
  // Draw with black pen
  g.setColor(0, 0, 0);
  // Draw line
  g.drawLine(startx, starty, currentx, currenty);
  // New starting point is the current position
  startx = currentx;
  starty = currenty;
 }

 /*--------------------------------------------------
 * Command event handling
 *-------------------------------------------------*/ 
 public void commandAction(Command c, Displayable d)
 {
  if (c == cmExit)
   midlet.exitMIDlet();
  else if (c == cmClear)
  {
   clearDisplay = true
   repaint();
  }
 }

 /*--------------------------------------------------
 * Pointer pressed
 *-------------------------------------------------*/ 
 protected void pointerPressed(int x, int y)
 {
  startx = x;
  starty = y;
 }

 /*--------------------------------------------------
 * Pointer moved
 *-------------------------------------------------*/ 
 protected void pointerDragged(int x, int y)
 {
  currentx = x;
  currenty = y;    
  repaint();
 } 
}

(出处:http://www.cncms.com)


Tags:使用 指针 事件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接