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

📄 gamescreenhold.java

📁 《j2me开发精解〉(詹健飞)CD-rom附带源码。用netbeans
💻 JAVA
字号:
package com.j2medev.chapter5.example;


import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.*;

import com.j2medev.chapter5.utility.Clock;

import com.j2medev.chapter5.example.hold.GameWorld;

import java.util.Random;

final public class GameScreenHold extends GameCanvas implements Runnable {
    
    public static Graphics graphics; //保存图形环境实例
    
    private boolean runningFlag = false; //线程运行标志
    
    private static final long TIME_PER_FRAME = 80;// 每一帧的周期
    
    private int width;//屏幕宽度
    
    private int height;//屏幕高度
    
    static public InputManager inputManager = new InputManager();
    
    ///////////////////////自定义部分开始/////////////////////////////////
    static public GameWorld world;
    
    
    
    int bkUpdateTick=0;
    
    ///////////////////////自定义部分结束/////////////////////////////////
    
    GameScreenHold(boolean flag) { //构造方法;
        super(flag);
        graphics = getGraphics();//取得图形环境实例
        width = getWidth();
        height = getHeight();
        init();
    }
    
    void init() { //初始化游戏数据;
        ///////////////////////自定义部分开始/////////////////////////////////
        
        world=new GameWorld(getWidth(),getHeight());
        
        
        
        ///////////////////////自定义部分结束/////////////////////////////////
    }
    
    private void input() { //处理输入
        ///////////////////////自定义部分开始/////////////////////////////////
        
        ///////////////////////自定义部分结束/////////////////////////////////
    }
    
    private void logic() { //更新逻辑
        ///////////////////////自定义部分开始/////////////////////////////////
        world.update();
        ///////////////////////自定义部分结束/////////////////////////////////
    }
    
    private void render(Graphics g) { //渲染画面
        ///////////////////////自定义部分开始/////////////////////////////////
        world.paint(g);
        ///////////////////////自定义部分结束/////////////////////////////////
    }
    
    synchronized public void start() {
        if (!runningFlag) {
            runningFlag = true;
            Thread th = new Thread(this);//启动线程
            th.start();
        }
    }
    
    synchronized public void stop() {
        runningFlag = false;
    }
    
    public void run() {
        System.out.println("Game main loop start");
        while (runningFlag) {
            long startTime = System.currentTimeMillis();
            input();
            logic();
            render(graphics);
            flushGraphics();//更新显示屏幕
            long elapsedTime = System.currentTimeMillis() - startTime;
            if (elapsedTime < TIME_PER_FRAME) {
                try {
                    Thread.sleep(TIME_PER_FRAME - elapsedTime);
                } catch (InterruptedException ex) {
                }
            }
        }
        System.out.println("Game main loop stop");
    }
    
    protected void keyPressed(int keyCode) {
        inputManager.keyPressed(keyCode);
    }
    
    protected void keyReleased(int keyCode) {
        inputManager.keyReleased(keyCode);
    }
    
    protected void keyRepeated(int keyCode) {
        inputManager.keyRepeated(keyCode);
    }
}

⌨️ 快捷键说明

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