程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 2D繪畫把持中的坐標系統變換代碼

2D繪畫把持中的坐標系統變換代碼

編輯:J2ME

 private translatecanvas canvas;   // canvas 
  public translate()
  {
    display = display.getdisplay(this);
    canvas  = new translatecanvas(this);
  }
  protected void startapp()
  {
    display.setcurrentcanvas );
  }
  protected void pauseapp()
  { }
 
  protected void destroyappboolean unconditional )
  { }
  public void exitmidlet()
  {
    destroyapp(true);

 notifydestroyed();
  }
}
 
/*--------------------------------------------------
* class translate
*
* draw image using translated coordinates
*-------------------------------------------------*/
class translatecanvas extends canvas implements commandlistener
{
  private command cmexit;  // exit midlet
  private translate midlet;
  private image im = null;
  private int translatex = 0, translatey = 0;
  public translatecanvas(translate midlet)
  {
    this.midlet = midlet;
    // create exit command & listen for events
    cmexit = new command("exit", command.exit, 1);

 addcommand(cmexit);
    setcommandlistener(this);
 
    try
    {
      // create immutable image
      im = image.createimage("/bolt.png");
    }
    catch (Java.io.ioexception e)
    {
      system.err.println("unable to locate or read .png file");
    }    
  
 
  protected void paint(graphics g)
  {
    if (im != null)
    {
      // clear the background
      g.setcolor(255

255255);
      g.fillrect(00, getwidth(), getheight());
      // translate coordinates
      g.translate(translatex, translatey);      
      // always draw at 0,0
      g.drawimage(im, 00, graphics.left | graphics.top);
    }
  }
 
  public void commandaction(command c, displayable d)
  {
    if (c == cmexit)
      midlet.exitmidlet();
  }
  protected void keypressed(int keycode)
  {
     switch (getgameaction(keycode))
    {
      case up: 
        // if scrolling off the top, roll around to bottom
        if (translatey - im.getheight() 0)
          translatey = getheight() - im.getheight();
        else
          translatey -= im.getheight();          
        break;
      case down:
 
        // if scrolling off the bottom, roll around to top
        if ((translatey + im.getheight() + im.getheight()) > getheight())
          translatey = 0;
        else
translatey += im.getheight();          
        break;
      case left:
        // if scrolling off the left, bring around to right
        if (translatex - im.getwidth() 0)
          translatex = getwidth() - im.getwidth();
        else
          translatex -= im.getwidth();          
        break;
 
      case right:
        // if scrolling off the right, bring around to left
        if ((translatex + im.getwidth() + translatex> getwidth())
          translatex = 0;
        else
 translatex += im.getwidth();          
        break;
    }        
    repaint();
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved