⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplelayerdemo.java

📁 J2ME MIDP 2.0 无线设备编程的一些源码
💻 JAVA
字号:
//simpleLayerDemo.java file
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

public class simpleLayerDemo extends MIDlet implements CommandListener
{
    private Command exitCommand,actCommand;
    private LayerCanvas canvas;
    public simpleLayerDemo()
    {//创建命令,画布和定时器
        exitCommand =new Command("Exit",Command.EXIT,1);
        actCommand =new Command("Action",Command.SCREEN,1);
        canvas =new LayerCanvas();
        canvas.addCommand(actCommand);
        canvas.addCommand(exitCommand);
        canvas.setCommandListener(this);
    }
    protected void startApp(  ) 
    {//显示画布并开始游戏执行
        Display.getDisplay(this).setCurrent(canvas);
    }

    protected void pauseApp(  )
    {
    }

    protected void destroyApp( boolean p1 )
    {
    }

    public void commandAction(Command c,Displayable d)
    {
        if (c ==exitCommand)
        {
            destroyApp(false);
            notifyDestroyed();
        }
        else if (c ==actCommand)
            canvas.Action();
    }
    public class LayerCanvas extends GameCanvas
    {
        private Graphics g;
        private TiledLayer backLayer0;//图层
        private Image backImage0;
        private int aniCounter =0;//计数器
        private int aniStarIndex =0;//保存动画分块的序号
        //记录图层backLayer0的每个单元对应的图像块序号
        private byte[ ][ ] backMap= 
            {{5,-1, 5,-1,-1},//序号-1为动态分块
             {5, 5, 5, 5,-1},
             {4, 5, 5, 5, 5},
             {4, 4, 1, 5, 5},//序号1为跳动的小球图像
             {4, 4, 4, 4, 4}};
        public LayerCanvas() 
        {
            super(true);
            g = getGraphics();//得到作图对象
            try 
            {//装入图像
                backImage0 = Image.createImage("/sky.png");
            } catch (Exception e) {}
            //创建图层,分块大小为:30×30,单元格数量为:5×5
            backLayer0 = new TiledLayer(5, 5, backImage0, 30, 30);
            //创建动画分块,aniStarIndex 应该返回 -1
            aniStarIndex = backLayer0.createAnimatedTile(3);
            for(int y=0;y<5;y++)
            {//逐个设置每个单元格的图像,标记为0的单元格表示不处理
                for(int x=0;x<5;x++)
                    backLayer0.setCell(x, y, backMap[y][x]);
            }
        }
        public void BallAction()
        {//直接修改单元格内的图像
            backLayer0.setCell(2, 3, aniCounter%2+1);
        }
        public void StarAction()
        {//修改动态分块中的图像来达到动画效果
            if(aniCounter%2 ==0)
                backLayer0.setAnimatedTile(aniStarIndex, 3);
            else
                backLayer0.setAnimatedTile(aniStarIndex, 6);
        }
        //执行游戏功能        
        public void Action()
        {
            aniCounter ++;//增加计时器
            StarAction();//显示星星的动画效果
            BallAction();//显示小球的动画效果
            //将图层绘制的脱机屏幕上
            backLayer0.paint(g);
            //刷新屏幕
            flushGraphics();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -