zoukankan      html  css  js  c++  java
  • J2ME游戏开发之GameCanvas构造类

     
    package com.slinw.gamecanvas;
    
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.game.GameCanvas;
    
    
    public abstract class RootGameCanvas extends GameCanvas implements Runnable{
    
            private Graphics g = null;
            private boolean isPlay; // Game Loop runs when isPlay is true
            private long delay; // To give thread consistency
         
            // Constructor and initialization
            public RootGameCanvas() {
                super(true);
                delay = 200;
                g = getGraphics();
            }
         
            // Automatically start thread for game loop
            public void start() {
                isPlay = true;
                new Thread(this).start();
            }
         
            public void stop() {
                isPlay = false;
            }
         
            // Main Game Loop
            public void run() {
                while (isPlay) {
                    keyEventInput();
                    drawScreen(g);
                    try {
                        Thread.sleep(delay);
                    } catch (InterruptedException ie) {}
                }
            }
         
            
            
            // Method to Handle User Inputs
            public void keyEventInput(){
                int key = getKeyStates();
                if((key & LEFT_PRESSED) != 0){
                    keyLeftPressedEvent();
                }
                
                if((key & RIGHT_PRESSED) != 0){
                    keyRightPressedEvent();
                }
                
                if((key & UP_PRESSED) != 0){
                    keyUpPressedEvent();
                }
                
                if((key & DOWN_PRESSED) != 0){
                    keyDownPressedEvent();
                }
            }
         
            
            // Method to Display Graphics
            public abstract void drawScreen(Graphics g);
            
            
            public abstract void keyLeftPressedEvent();
            
            public abstract void keyRightPressedEvent();
            
            public abstract void keyUpPressedEvent();
            
            public abstract void keyDownPressedEvent();
        }
    
  • 相关阅读:
    Redis入门--- 五大数据类型 ---String ,List
    Redis入门 --- 安装
    Netty 应用实例-群聊系统,心跳检测机制案例 ,WebSocket 编程实现服务器和客户端长连接
    红锁的实现
    基于Redis实现分布式锁
    基于分布式锁 分布式全局唯一ID
    Netty Java BIO 编程 (一)
    Netty Java NIO 基本介绍Channel 和 buffer (二)
    Java AIO 基本介绍
    SpringBoot 系列教程自动配置选择生效
  • 原文地址:https://www.cnblogs.com/zhangweia/p/2145910.html
Copyright © 2011-2022 走看看