Sprite自用版

import javax.microedition.lcdui.*;
 
 
    public abstract  class Sprite  {
   
 
   
int x,y; //不用解释X,Y坐标
  /*                             */ 
  public int getX() { return x; }
        
  public int getY() { return y; }
  /*                             */
   
   
   
       
int sequence[];//自定义序列

      void setFrameSequence(int[] seq){
         sequence =new int[seq.length];
         for(int i=0;i<seq.length;i++){
             sequence[i]=seq[i];
            }                               }
           
      void setFrame(int t){
         sequence =new int[1];
         sequence[0]=t;
         if(sequence[0]>=framecount)
              sequence[0]=0;
         if(sequence[0]<0)
              sequence[0]=framecount;   }
    

int framecount;  //祯图象数量

int count=0;
   
       
   
    /2大构造函数///
    ///

  
int n;
Image sprite; 

 int width,height;

    //从图片获取SPRITE
        
     Sprite(Image img,int frameWidth,int frameHeight){
    
           this.sprite=img;
    
           this.width=frameWidth;
           this.height=frameHeight;
      
        int a=img.getWidth()/width;
            n=a;
        int b=img.getHeight()/height;
           
           framecount=a*b;                                 }
Image img=null;   
    //单图SPRITE

     Sprite(Image img) {
     
       this.img=img;        } 
  
          
   
    ///     是否可见    ///
         
static boolean visible=true;//默认可见

     void setVisible(boolean visible){
    
      this.visible=visible;                }
     
     boolean isVisible(){
    
      return visible;         }
     
     ///
     /描绘部分/
     ///

public void setPosition(int x,int y){

   this.x=x;this.y=y;
}


     
      void paint(Graphics g){
              
      
        if(visible){
                   if(img!=null)
                     g.drawImage(img,x,y,0);
                     else
                   
                    
                     if(sequence==null){ //默认正常序列
                     
                     int a=(count%framecount%n)*width;
                     int b=(count%framecount/n)*height;//优先级问题必须注意
                    
                     Trans(g,x-a,y-b,transform);//带有翻转的显示
                                    
                     count++;
                     }else{
                     g.setClip(x,y,width,height);
                     int d=sequence.length;
                     int c=count%d;
                     Trans(g,x-sequence[c]%n*width,y-(sequence[c]/n)*height,transform);
                    
                      count++; 
                                     } 
                   }                         }
     /
     ///翻转出于技术考虑只写了水平翻转和垂直翻转//
    
int transform=0;//翻转控制
       void Trans(Graphics g,int j,int k,int transform){
                 if(transform==0){//正常
                     g.setClip(x,y,width,height);
                     g.drawImage(sprite,j,k,0);
                                 }
                if(transform==1){//水平
                  for(int i=0;i<height;i++){
                    g.setClip(x+i,y,1,height);
                    g.drawImage(sprite,j-width+2*i+1,k,0);                  
                               } }
                if(transform==2){//垂直
                  for(int i=0;i<width;i++){
                    g.setClip(x,y+i,width,1);
                    g.drawImage(sprite,j,k-height+2*i+1,0);
                   }  }               }
      void setTransform(int transform){//设置翻转1是水平2是垂直0是正常
                 this.transform=transform;
                 if(this.transform>2|this.transform<0)
                 this.transform=0;           }
      
       获取图片     
       ///
Image tupian;      
     Image getImage(String lujing) {
    
       try {
          tupian=Image.createImage("/"+lujing+".png");
           }catch(Exception e) {}
        return tupian;                         }
            
        } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值