J2ME游戏开发之层:动画

 

package com.slinw.TiledLayout;



import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.TiledLayer;



import com.slinw.gamecanvas.RootGameCanvas;



/**

 * 

 * @author 章伟

 * int ANI = tiledLayer.createAnimatedTile(STR);

 *         创建一个动态贴图,动态贴图必须与一个静态贴图关联

 * mBackground.setAnimatedTile(ANI,SHN);

 *         切换动画效果

 * 

 * 拿下面的工程来说,是怎样实现星星闪烁的动画的

 *         1. 首先定义一个动画贴片 ANI,通过调用createAnimatedTile方法使这个动画贴片与星星关联

 *         2. 然后通过调用setAnimatedTile(ANI,SHN)是星星和闪烁交替呈现而实现动画

 */

public class AnimTiledLayout extends RootGameCanvas{



      private TiledLayer mBackground;//地图

      private int aniCounter = 0;

      private int MON = 1;//月亮moon

      private int SHN = 2;//闪烁shine

      private int STR = 3;//星星star

      private int AIR = 4;//夜空air

      private int ANI = -1;//动画贴片animated

      

    public AnimTiledLayout(){

        initData();

    }

    

    private void initData(){

        

        

        try{

            mBackground = createBackground();//创建背景

        }catch(IOException e){

        System.out.println("create error");

        }



        mBackground.setPosition(50,50);  



    }

    

      private TiledLayer createBackground()throws IOException {

            Image image = Image.createImage("/star.png");//创建背景图片

            TiledLayer tiledLayer = new TiledLayer(10, 10, image, 32, 32);//注意:背景的参数的设置!

            int columns = 10;

            

            ANI =  tiledLayer.createAnimatedTile(STR);

            

            int[] map = {//地图数组

               AIR,AIR,AIR,AIR,AIR, AIR,AIR,AIR,AIR,AIR,

               AIR,ANI,AIR,AIR,AIR, AIR,AIR,AIR,STR,AIR,

               AIR,AIR,STR,AIR,AIR, ANI,AIR,AIR,STR,AIR,

               AIR,AIR,AIR,MON,STR, AIR,AIR,STR,AIR,AIR,

               AIR,AIR,STR,STR,AIR, AIR,AIR,AIR,AIR,AIR,

               AIR,AIR,STR,AIR,ANI, AIR,AIR,AIR,ANI,AIR,

               AIR,AIR,AIR,AIR,AIR, STR,AIR,AIR,AIR,AIR,

               AIR,AIR,STR,AIR,AIR, AIR,AIR,AIR,AIR,AIR,

               AIR,STR,AIR,AIR,AIR, STR,AIR,AIR,AIR,AIR,

               AIR,AIR,AIR,AIR,AIR, AIR,AIR,AIR,AIR,AIR,

            };//显示地图

            

            for (int i = 0; i < map.length; i++) {

              int column = i % columns;

              int row = (i - column) / columns;

              tiledLayer.setCell(column, row, map[i]);//通过一个循环来设置tiledLayer

            }

            

            return tiledLayer;//返回

          }

      

    public void drawScreen(Graphics g) {

        // TODO Auto-generated method stub

         aniCounter++;

         

         if(aniCounter%6 == 0){

             mBackground.setAnimatedTile(ANI,SHN);

         }        

         else{

             mBackground.setAnimatedTile(ANI,STR);

         }

         

        mBackground.paint(g);

        flushGraphics();

    }



    public void keyLeftPressedEvent() {

        // TODO Auto-generated method stub

        

    }



    public void keyRightPressedEvent() {

        // TODO Auto-generated method stub

        

    }



    public void keyUpPressedEvent() {

        // TODO Auto-generated method stub

        

    }



    public void keyDownPressedEvent() {

        // TODO Auto-generated method stub

        

    }



}

你可能感兴趣的:(j2me)