LPDrawManage.java
上传用户:gyyuli
上传日期:2013-07-09
资源大小:3050k
文件大小:6k
源码类别:

J2ME

开发平台:

Java

  1. /**
  2.  * <p>Title: lipeng</p>
  3.  * <p>Description:
  4.  * You cannot remove this copyright and notice.
  5.  * You cannot use this file without the express permission of the author.
  6.  * All Rights Reserved</p>
  7.  * <p>Copyright: lizhenpeng (c) 2004</p>
  8.  * <p>Company: LP&P</p>
  9.  * @author lizhenpeng
  10.  * @version 1.0.3
  11.  * <p>
  12.  * Revise History
  13.  * 2004.07.12 Revise magic number may reduce speed V1.0.1
  14.  * 2004.07.28 remove setclip back to full screen V1.0.2
  15.  * 2004.08.12 revise function name first letter to small V1.0.3
  16.  * </p>
  17.  */
  18. package lipeng;
  19. import javax.microedition.lcdui.*;
  20. import java.util.*;
  21. public class LPDrawManage
  22. {
  23.   private int width;
  24.   private int height;
  25.   private int currentHeight=0;
  26.   private int currentWidth=0;
  27.   private int nX=0;
  28.   private int nY=0;
  29.   private int beginX=0;
  30.   private int beginY=0;
  31.   private int tempX;
  32.   private int tempY;
  33.   private char arrayNum=0;
  34.   public LPDrawManage(int width,int height)
  35.   {
  36.     this.width = width;
  37.     this.height = height;
  38.   }
  39.   public void drawMaps(Graphics g, LPMaps maps[])
  40.   {
  41.     int i = 0;
  42.     for (i = 0; i < maps.length; i++)
  43.     {
  44.       beginX = 0;
  45.       beginY = 0;
  46.       nX = maps[i].x % maps[i].tileSize;
  47.       nY = maps[i].y % maps[i].tileSize;
  48.       while (true)
  49.       {
  50.         while (true)
  51.         {
  52.           //if array's num is 0xff, map is not draw;
  53.           tempY = ( (beginX + maps[i].x) / maps[i].tileSize) % maps[i].w;
  54.           tempX = ( (beginY + maps[i].y) / maps[i].tileSize) % maps[i].h;
  55.           if (tempY < 0 || tempX < 0)
  56.           {
  57.             beginY += maps[i].tileSize;
  58.             continue;
  59.           }
  60.           arrayNum = (char) (maps[i].mapArray[tempX][tempY] & (0x00FF));
  61.           if (arrayNum != 0xff)
  62.           {
  63.             currentWidth = beginX - nX;
  64.             currentHeight =
  65.               beginY - (arrayNum * maps[i].tileSize);
  66.             g.setClip(currentWidth, beginY - nY, maps[i].tileSize,
  67.                       maps[i].tileSize);
  68.             g.drawImage(maps[i].image.image, currentWidth, currentHeight - nY,
  69.                         Graphics.LEFT | Graphics.TOP);
  70.            // g.setClip(0, 0, width, height);
  71.           }
  72.           if (beginY < height)
  73.           {
  74.             beginY += maps[i].tileSize;
  75.           }
  76.           else
  77.           {
  78.             break;
  79.           }
  80.         }
  81.         if (beginX < width)
  82.         {
  83.           beginX += maps[i].tileSize;
  84.           beginY = 0;
  85.         }
  86.         else
  87.         {
  88.           break;
  89.         }
  90.       }
  91.     }
  92.   }
  93.   public void drawMaps(Graphics g, LPMaps maps)
  94.   {
  95.     currentHeight = 0;
  96.     currentWidth = 0;
  97.     nX = 0;
  98.     nY = 0;
  99.     beginX = 0;
  100.     beginY = 0;
  101.     arrayNum = 0;
  102.     if (maps.x < 0)
  103.     {
  104.       maps.x += maps.w * maps.tileSize;
  105.     }
  106.     if (maps.y < 0)
  107.     {
  108.       maps.y += maps.h * maps.tileSize;
  109.     }
  110.     nX = (maps.x) % maps.tileSize;
  111.     nY = (maps.y) % maps.tileSize;
  112.     while (true)
  113.     {
  114.       while (true)
  115.       {
  116.         tempY = ( (beginX + maps.x) / maps.tileSize) % maps.w;
  117.         tempX = ( (beginY + maps.y) / maps.tileSize) % maps.h;
  118.         if (tempY < 0 || tempX < 0)
  119.         {
  120.           beginY += maps.tileSize;
  121.           continue;
  122.         }
  123.         arrayNum = (char) (maps.mapArray[tempX][tempY] & (0x00FF));
  124.         if (arrayNum != 0xFF)
  125.         {
  126.           currentWidth = beginX - nX;
  127.           currentHeight = beginY - (arrayNum * maps.tileSize);
  128.           g.setClip(currentWidth, beginY - nY, maps.tileSize, maps.tileSize);
  129.           g.drawImage(maps.image.image, currentWidth, currentHeight - nY,
  130.                       Graphics.LEFT | Graphics.TOP);
  131.          // g.setClip(0, 0, width, height);
  132.         }
  133.         if (beginY < height)
  134.         {
  135.           beginY += maps.tileSize;
  136.         }
  137.         else
  138.         {
  139.           break;
  140.         }
  141.       }
  142.       if (beginX < width)
  143.       {
  144.         beginX += maps.tileSize;
  145.         beginY = 0;
  146.       }
  147.       else
  148.       {
  149.         break;
  150.       }
  151.     }
  152.   }
  153.   public void drawSprite(Graphics g, LPImageManage im, LPSprite sprite)
  154.   {
  155.     if (!sprite.isHidden)
  156.     {
  157.       g.setClip(sprite.x,
  158.                 sprite.y, im.frameSize,
  159.                 im.frameSize);
  160.       g.drawImage(im.image, sprite.x,
  161.                   sprite.y -
  162.                   sprite.frameCnt *
  163.                   im.frameSize, g.LEFT | g.TOP);
  164.      // g.setClip(0, 0, width, height);
  165.     }
  166.   }
  167.   public void drawSprite(Graphics g, LPImageManage im, Vector vec) {
  168.     if(vec==null)
  169.       return;
  170.     for (int i = vec.size()-1; i >=0 ; --i) {
  171.       if(((LPSprite)vec.elementAt(i)).isHidden)
  172.       {
  173.         continue;
  174.       }
  175.       if(((LPSprite)vec.elementAt(i)).x<-im.frameSize
  176.          ||((LPSprite)vec.elementAt(i)).x>width
  177.          ||((LPSprite)vec.elementAt(i)).y<-im.frameSize
  178.          ||((LPSprite)vec.elementAt(i)).y>height+im.frameSize)
  179.       {
  180.         continue;
  181.       }
  182.       g.setClip(((LPSprite)vec.elementAt(i)).x, ((LPSprite)vec.elementAt(i)).y, im.frameSize, im.frameSize);
  183.       g.drawImage(im.image, ((LPSprite)vec.elementAt(i)).x,
  184.                   ((LPSprite)vec.elementAt(i)).y - ((LPSprite)vec.elementAt(i)).frameCnt * im.frameSize, g.LEFT | g.TOP);
  185.       //g.setClip(0, 0, width, height);
  186.     }
  187.   }
  188.   public void drawSprite(Graphics g, LPImageManage im, LPSprite []sprites) {
  189.     if(sprites==null)
  190.       return;
  191.    for (int i = sprites.length-1; i >= 0; --i) {
  192.      if(sprites[i].isHidden)
  193.      {
  194.        continue;
  195.      }
  196.      if(sprites[i].x<-im.frameSize
  197.         ||sprites[i].x>width
  198.         ||sprites[i].y<-im.frameSize
  199.         ||sprites[i].y>height+im.frameSize)
  200.      {
  201.        continue;
  202.      }
  203.      g.setClip(sprites[i].x, sprites[i].y, im.frameSize, im.frameSize);
  204.      g.drawImage(im.image, sprites[i].x,
  205.                  sprites[i].y - sprites[i].frameCnt * im.frameSize, g.LEFT | g.TOP);
  206.      //g.setClip(0, 0, width, height);
  207.    }
  208.  }
  209. }