网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.getUTCHours 方法.
.用导航组件来构建动态 Portal 菜.
.教你如何编写Java类(二).
.错误的堆大小产生的.
.JAVA到底有什么用.
.用Java多媒体框架设计自动播放机.
.如何实例化一个抽象类.
.使用布局管理器 呈现生动的JAVA程.
.Java中用Servlet容器实现程序监听.
.把jboss安装成windows的服务!.
.一个容易疏忽的多线程程序陷阱.
.Servlet实现的代理服务器功能.
.JCP失去活力 Java.net能否取而代.
.整合 Macromedia Flex.
.Java学习路径(二)书籍篇.
.用Java实现语音引擎.
.Java语言和C++语言的差异—老生常.
.Java初学者备忘录.
.FolderExists 方法.
.Java线程入门——什么是线程.

使用GameCanvas制作星空效果

发表日期:2008-1-5


    MIDP2.0中提供了游戏开发专用的API,比如GameCanvas等类。他们位于Javax.microedition.lcdui.game包内。本文介绍GameCanvas的基本使用方法并实现一种滚动星空的效果。您可以参考Game Canvas Basic获得更具体的信息。

    GameCanvas是Canvas的子类,因此他同样继续了Canvas类的一些特性,比如showNotify()方法会在Canvas被显示在屏幕的时候调用,而hideNotify()会在Canvas离开屏幕的时候被调用。我们可以把他们当作监听器来使用,用于初始化和销毁资源。比如
    // When the canvas is shown, start a thread to
    // run the game loop.

    protected void showNotify()
    {
        random = new Random();
        thread = new Thread(this);
        thread.start();
    }
    // When the game canvas is hidden, stop the thread.

    protected void hideNotify()
    {
        thread = null;
    }

在游戏开发中最重要的就是接受用户触发的事件然后重新绘制屏幕,通常我们使用getKeyStates()方法判定哪个键被按下了,然后绘制屏幕,调用flushGraphics()。在GameCanvas中,系统事实上已经为我们实现了双缓冲技术,因此每次我们绘制的时候就是在off-screen上绘制的。结束后通过flushGraphics把它复制到屏幕上去。下面是典型的接受事件、处理逻辑、绘制屏幕的代码。
 // Get the Graphics object for the off-screen buffer
Graphics g = getGraphics();

while (true) {
      // Check user input and update positions if necessary
      int keyState = getKeyStates();
      if ((keyState & LEFT_PRESSED) != 0) {
          sprite.move(-1, 0);
      }
      else if ((keyState & RIGHT_PRESSED) != 0) {
          sprite.move(1, 0);
      }

// Clear the background to white
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(), getHeight());

      // Draw the Sprite
      sprite.paint(g);

      // Flush the off-screen buffer
      flushGraphics();
}

    下面开始实现我们滚动星空的效果,其实设计的思想非常简单。我们启动一个线程,使用copyArea()方法把屏幕的内容往下复制一个像素的距离。然后绘画第一个空白的直线,随机的在直线上绘画点儿,这样看起来就像星空一样了。逻辑代码如下:
    // The game loop.

    public void run()
    {
        int w = getWidth();
        int h = getHeight() - 1;
        while (thread == Thread.currentThread())
        {
            // Increment or decrement the scrolling interval
            // based on key presses
            int state = getKeyStates();


上一篇:UniJa技术体系管窥 人气:673
下一篇:基于Nokia S40的猜数字游戏之二 人气:640
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐