网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
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,移动开发
本月文章推荐
.利用HSQLDB 进行Hibernate单元测.
.Servlet简介(一).
.Java远程方法调用(一).
.J2ME游戏开发学习之用setClip分割.
.对J2EE中的DAO组件编写单元测试.
.Ibatis的学习笔记.
.在MySQL中添加数据库.
.使用指针事件在Canvas上绘画.
.类似卫星扫描效果.
.Spring中定义Bean.
.Apusic应用服务器和CORBA互操作.
.使用FileConnection访问文件系统.
.再议j2me进度条与线程化模型.
.精通Hibernate映射继承关系之一.
.快速创建Webapp.
.在myeclipse下配置oc4j.
.JavaMail快速入门-6.
.详细讲解基于J2EE实现Web方式软交.
.Velocity用户手册.
.使用Filter访问Session信息.

J2ME-定时器(TimerTask)使用及初探

发表日期:2007-12-23


  最近完成个J2ME游戏,一直以来总想写点东西给大家~因为以前总是在索取,现在把J2ME的入门知识-定时器的相关知识以及我的一点体会-付出给大家,内容不多只是它的使用,希望对入门的J2ME开发者有所帮助。

首先,说下定时器的基本使用,以下内容摘自NOKIA 论坛里的一篇文章:

《为60系列平台设计Java应用》--定时器

  各种定时器让各种应用能方便地规划任务,而不必对线程进行调配。使用线程通常需要更为复杂的设计,并需要更多的系统资源,对各种小设备而言,比较奢侈。

创建一个定时器的范例:

public class MyTask extends TimerTask

{

private int iCount;

public MyTask(int aStart)

{

super();

iCount = aStart;

}

public void run()

{

iCounter--;

System.out.println(“Counter is now ” + iCounter);

if (iCounter == 0)

cancel();

}

}

构建一个定时器并向其中添加MyTask:

MyTask myTask = new Mytask(50);

Timer myTimer = Timer();

MyTimer.schedule(myTask, 1000, 20000);

在这个范例中,每20秒就会调用一次MyTask的run()方法。

并不保证定时器任务一定按时执行。各个定时器任务依次发生。如果其中一个任务需时很长,下一个任务只能在当前任务完成之后再执行。对于循环执行的任务,最好保证run()方法能很快完成。

一个以上地定时器也是可能的,这样就可以将任务分配到几个定时器上。然而,使用多定时器要多加小心,因为每个定时器只运行自己的线程,同步可能是需要的。

 

  上面就是定时器的基本用法,对于一些简单的定时器操作这样做就可以了,直接把要执行的代码放入Run中。对于逻辑结构复杂点的,需要多次执行Run方法的时候就要另想办法来做了。下面是我使用定时器的一个框架,实际上就是个面向对象的应用,比较简单也好理解,希望对大家有个帮助,也希望有不同见解的朋友共同交流。

同样要有个类来继承TimerTask:

import java.util.TimerTask;

public class GAMETask extends TimerTask {

    private GameObject m_Object;

    public GAMETask(GameObject object) {

        m_Object = object;

    }

    public void run() {

        m_Object.gameTask();

    }

}

然后再定义一个GameObject接口:

public interface GameObject {

    public abstract void gameTask();

}

最后就是在你的Canvas类中使用了:

public class GameCanvas extends FullCanvas implements GameObject {

//......   

private static Timer m_Timer;

private static byte runcase;

public GameCanvas(MjMIDlet midlet, WhkRMS whkrms) {

  //......

}

public void gameTask() {

        switch (runcase) {

        case 0:

            aaaGametask();

            break;


        case 1:

            bbbGametask();

            break;

        case 2:

            cccGametask();

            break;

       }

//分别实现各个方法,也就是Run里面要执行的东西,分情况来执行对应 的Run。

 public void bbbGameTask() {

        m_bFlash = !m_bFlash;

        repaint();

        m_Timer.schedule(new GAMETask(this), 500L);

    }

public void keyPressed(int i) {

        switch (runcase) {

        case 1:

            aaaPressed(i);

            break;

        case 2:

            bbbPressed(i);

            break;

       }

}

//分别实现相应的按键Pressed()方法,可以在其中设置runcase的值,来控制程序。当然也可在其他地方设置runcase来控制。

Public void aaaPressed(int i){

     if(i==-7){

         //.......

         m_Timer.cancel();

         runcase=2;

         repaint();

        (new Timer()).schedule(new GAMETask(this), 500L);

}}

public void paint(Graphics g) {

        switch (runcase) {

        case 0:

        //......

        Break;

        case 1:

          //......

        case 2:

         //......

}}}

  整个的框架就是这样了~我用这个开发的是麻将类游戏,并不是整个游戏的框架哦~当然线程在整个游戏中也是要用到的,这里就不多谈了。有何意见请联系我:


zxhwolfe@hotmaill.com

(出处:)


上一篇:实战程序管理器和多语言程序 人气:520
下一篇:使用J2MEUnit测试J2ME程序 人气:856
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐