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

📄 gamecanvas.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
字号:
package com.j2medev.chapter7;

import javax.microedition.lcdui.*;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.control.ToneControl;

public class GameCanvas extends Canvas implements CommandListener, Updatable {
    
    private int IMAGE_WIDTH = 0;
    private Image srcImage = null;
    private Document document;
    private Command exit = new Command("Exit", Command.EXIT, 1);
    
    public void update() {
        //重绘屏幕并播放音调
        repaint();
        try {
            Manager.playTone(120,300,100); 
        } catch (MediaException ex) {
            ex.printStackTrace();
        } 
    }
    
    public void commandAction(Command c, Displayable displayable) {
        if(c==exit)
            PuzzleMIDlet.quitApp();
    }
    
    public GameCanvas(Image img){
        srcImage = img;
        setCommandListener(this);
        addCommand(exit);
        int w = srcImage.getWidth();
        int h = srcImage.getHeight();
        IMAGE_WIDTH = ((w-h)>0?h:w)/3;
        Image[] sprite = new Image[9];
        //分割img得到Image[]数组
        for(int i = 0;i<sprite.length;i++){
            sprite[i] = Image.createImage(IMAGE_WIDTH,IMAGE_WIDTH);
            Graphics g = sprite[i].getGraphics();
            g.translate(-(i%3)*IMAGE_WIDTH,-(i/3)*IMAGE_WIDTH);
            g.drawImage(srcImage,0,0,Graphics.LEFT|Graphics.TOP);
        }
        document = new Document(this,sprite,2,2);
    }
    
    protected void paint(Graphics g) {
        int color = g.getColor();
        g.setColor(0xFFFFFF);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(color);
        int state = document.getState();
        if(state==Document.PUZZLE_STATE) {
            for(int x=0; x<3; x++) {
                for(int y=0; y<3; y++) {
                    Image image = document.getImage(x, y);
                    int m = x*IMAGE_WIDTH;
                    int n = y*IMAGE_WIDTH;
                    if(image!=null) {
                        g.drawImage(image, y*IMAGE_WIDTH, x*IMAGE_WIDTH, Graphics.LEFT|Graphics.TOP);
                    } else {
                        g.setColor(0x000000);
                        g.fillRect(y*IMAGE_WIDTH, x*IMAGE_WIDTH, IMAGE_WIDTH, IMAGE_WIDTH);
                    }
                }
            }
            g.setColor(0xffffff);
            for(int i=0; i<=3; i++) {
                g.drawLine(0, i*IMAGE_WIDTH, 3*IMAGE_WIDTH, i*IMAGE_WIDTH);
                g.drawLine(i*IMAGE_WIDTH, 0, i*IMAGE_WIDTH, 3*IMAGE_WIDTH);
            }
        } else {
            for(int x=0; x<3; x++) {
                for(int y=0; y<3; y++) {
                    Image image = document.getImage(x, y);
                    g.drawImage(image, y*IMAGE_WIDTH, x*IMAGE_WIDTH, Graphics.LEFT|Graphics.TOP);
                }
            }
        }
    }
    
    protected void keyReleased(int keyCode) {
        if(keyCode==KEY_NUM0) {
            document.setState(Document.PUZZLE_STATE);
        }
    }
    
    protected void keyPressed(int keyCode) {
        //更新document的状态
        switch(keyCode) {
            case KEY_NUM1:
                document.move(0,0);
                break;
            case KEY_NUM2:
                document.move(0,1);
                break;
            case KEY_NUM3:
                document.move(0,2);
                break;
            case KEY_NUM4:
                document.move(1,0);
                break;
            case KEY_NUM5:
                document.move(1,1);
                break;
            case KEY_NUM6:
                document.move(1,2);
                break;
            case KEY_NUM7:
                document.move(2,0);
                break;
            case KEY_NUM8:
                document.move(2,1);
                break;
            case KEY_NUM9:
                document.move(2,2);
                break;
                // 显示原始图片
            case KEY_NUM0:
                document.setState(Document.IMAGE_STATE);
                break;
        }
    }
}

⌨️ 快捷键说明

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