网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.J2ME蓝牙程序开发实战入门.
.使用SWT开发用户图形界面.
.在Java编程中如何使用线程.
.Jdom使用指南.
.敏捷开发的必要技巧:将注释转为.
.Java中更新XML文档的常用方法.
.获取utf-8源码(从中文到utf-8).
.在Java语言应用中实现UDP协议编程.
.使用ObjectStream会出现的问题.
.用JAXB生成一个XML文档.
.对等计算实践之:构建 P2P 应用程.
.SCA及未来的开发.
.关于WebWork2中的中文问题 选择自.
.X3D实战基础讲座之十.
.如何搭建J2EE开发环境.
.用java实现一个简单的序列化的例.
.Java Socket编程(四)重复和并发.
.J2EE应用开发中与Oracle数据库的.
.JBuilder2005单元测试体验之测试.
.常见Java开发工具的特点比较(1).

实现游戏中的文字滚屏功能

发表日期:2008-1-5


    在游戏开发的时候,我们可能会需要制作文字滚屏的效果。比如一行文字从屏幕下部滚动到屏幕的中间,在J2ME中我们可以借助Canvas类以及Timer类来完成类似的效果。

    在J2ME的高级的图形用户界面API中并没有提供类似滚屏的效果,因此我们需要自己通过Canvas类来实现,我们应该在Canvas类的paint()的方法中绘制我们要滚动的文字,基本代码如下所示:
    protected void paint(Graphics arg0)
    {
        int oldColor = arg0.getColor();
        arg0.setColor(255, 255, 255);
        arg0.fillRect(0, 0, width, height);
        arg0.setColor(oldColor);
        arg0.drawString(welcome, left, i, Graphics.LEFT Graphics.TOP);

    }
当我们初始化一个Canvas的子类的时候,paint()方法将被调用,我们需要它定时得往上滚动,因此我们可以借助Timer和TimerTask类,我们在TimerTask类中通过实现public void run()方法来对文字的y坐标减小一定的数值。当文字到达屏幕的中间的时候停止减少并停止timer。在这里我是实现了一个内部类,当然你也可以实现成匿名内部类。
   private class ScrollTask extends TimerTask
    {
        public void run()
        {
           
            if (i > height / 2)
            {
                i = i - fontHeight;
                repaint();
            } else
            {
                going = false;
                timer.cancel();
            }

        }
    }
我们的WelcomeCanvas类扩展Canvas并实现它的paint()方法,在WelcomeCanvas的构造器中我们把display和下一个Displayable的对象传给他,并在其中完成一些具体尺寸的计算。
    public WelcomeCanvas(Display display,Displayable disp) {
        super();
        Font font = Font.getDefaultFont();
        left = (width - font.stringWidth(welcome))/2;
        fontHeight = font.getHeight();
        this.display = display;
        this.next = disp;
        ScrollTask st = new ScrollTask();
        timer.schedule(st, 100, 100);
               
    }
当文字滚动到中间后,用户可以通过按下任意键继续操作。因此我们需要keyPressed()方法,假如是触摸屏的话你可以用pointerPressed()方法实现。
    public void keyPressed(int keyCode)
    {
        if(!going)
        display.setCurrent(next);
    }
下图是程序运行的结果,并给出源代码。其实很多类似的效果都可以通过这样的方法来实现。
实现游戏中的文字滚屏功能


上一篇:使用Properties从配置文件中读取数据 人气:1209
下一篇:实现游戏中的图片滚屏功能 人气:637
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐