2.0方法1.0实现之Sprite类

 

       现在的J2ME游戏参考书都是描述MID2.0,给我们这些学习的新手带来不少麻烦。因为例如Sprite类在游戏开发中很常用到,可是1.0是不支持的。但换句话讲2.0不过是比1.0多提供了几个类。那我们就常试着自己在1.0中写出这些类的方法,下面我们就来写Sprite类的方法

                                Sprite(Image img,int frameWidth,int frameHeight)

先理解下这个方法的意思,是从大图上依次读取frameWidth*frameHeight大小的图片存入默认数组。

以序列号0开头标记。

我们试图创建Image.createImage(frameWidth,frameHeight)区域。然后将对应序列的图描绘,最后保存到相应的数组。

下面是我的Sprte方法

                  private Image[]  sprite;//类变量储存图片
 
  public void Sprite(Image img,int frameWidth,int frameHeight)
 
   {
           int m=img.getWidth()/frameWidth; / /确定数组大小
           int n=img.getHeight()/frameHeight;
          
           int k=m*n; //数组大小
          
           sprite=new Image[k];//初始化要保存的数组
            
        Image a=Image.createImage(frameWidth,frameHeight);//创建描绘区域,在双缓冲时常见
               
                  Graphics g=a.getGraphics();

                
         for(int i=0;i<k;i++){
        
                 g.drawImage(img,-(i/m)*frameWidth,-(i%m)*frameHeight,0);//
0是锚点,左上的意思

                 /*新手比较难理解img,-(i/m)*frameWidth,-(i%m)*frameHeight,0

              我们这里确定m,n  来看图                     

        0, 1 , 2, 3, 4

         5,   6,  7,   8, 9

            10,11 ,12,13,14   

         m=5,n=3,图示为对应序列号。k=5*3=15,那么将它对应二维数组。[0][0]对应0,

               [1][1]对应6,那么[i/m][i%n]对应i ,之后不用我解释了吧。   */     

   
               sprite[i]=Image.createImage(a);//将所选区域存入数组
               
                             }
    }
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值