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

📄 maincanvas.java

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

import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.rms.RecordStore;

public class MainCanvas extends Canvas implements Runnable {
    //在内存中存储方块的x,y值
    private int x = 0;
    private int y = 0;
    public static final int WIDTH = 20;
    public static final int FRAME_LENGTH = 2500;
    private Random random = new Random();
    private Thread t = null;
    //是否为重新启动
    private boolean restart = false;
    private boolean stopped = false;
    //方便MainCanvas回调midlet的pauseApp()方法
    private LifeMIDlet midlet = null;
    
    public MainCanvas(LifeMIDlet midlet) {
        this.midlet = midlet;
        x = getWidth()/2;
        y = getHeight()/2;
        t = new Thread(this);
        t.start();
    }
    //设置是否是中断后重新启动
    public void setRestart(boolean flag){
        restart = flag;
    }
    public void release(){
        stopped = true;
        t = null;
    }
    
    public void restart(){
        stopped = false;
        t = new Thread(this);
        t.start();
    }
    
    public void run(){
        //如果是从中断中恢复,让计时器线程休眠1秒后再执行
        //确保用户能看到中断前的界面
        if(restart){
            try {
                t.sleep(1000);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
        while(!stopped){
            long t1 = System.currentTimeMillis();
            beep();
            repaint();
            serviceRepaints();
            long t2 = System.currentTimeMillis();
            if(t2 - t1 < FRAME_LENGTH){
                try{
                    Thread.sleep(FRAME_LENGTH + t1 - t2);
                }catch(Exception ex){
                    ex.printStackTrace();
                }
            }
        }
        System.out.println("The value of x,y is saved as ("+x+","+y+")");
    }
    
    private void beep(){
        //随即更新x,y值
        x =( random.nextInt()>>>1)%(getWidth()-WIDTH);
        y = (random.nextInt()>>>1)%(getHeight()-WIDTH);
    }
    public void paint(Graphics g){
        System.out.println("("+x+","+y+")");
        g.setColor(0xFFFFFF);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(0,128,128);
        g.drawString("("+x+","+y+")",0,0,Graphics.LEFT|Graphics.TOP);
        g.fillRect(x, y, WIDTH,WIDTH);
    }
    
    public void showNotify(){
        
    }
    
    public void hideNotify(){
    //针对Nokia 7610的处理,nokia 7610不会调用pauseApp()。
//#if DefaultColorPhone
//#     midlet.pauseApp();
//#endif
    }
}

⌨️ 快捷键说明

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