快速业务通道

如何使用J2ME中的线程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

如何使用J2ME中的线程

时间:2011-02-10 林刚

线程在J2ME开发中是不可或缺的一部分,J2ME继承了J2SE中关于java.lang中的Runnable接口,以及Thread类。但是,由于J2ME应用的特殊性,J2ME程序中去除了部分API,没有线程组的概念,也没有daemon线程。

今天,我们从一个例子出发,来学习J2ME当中的线程的概念。我们选取的例子是俄罗斯方块。首先,有一些要注意的事项:

1.注意一点,要注意在J2me中不要使用浮点数,这样可以通过编译,但是不能通过预验证。因为一般手持设备都无法负担浮点运算的高负荷。

2.在J2ME程序当中,绝大多数的空间为图片所占有,我们可以看到,今天我们的例子没有任何图片,仅仅5k,如果是开发产品,不可避免的要使用图片,

但是尽量使用压缩率高的png图片,而且不要太过复杂,因为复杂的图片会使得图片变得很大。

3.在程序中尽量使用常量特别是位置信息,这样当作修改的时候只要改一个量就可以了,而且当移植到其他平台的时候也会减少很多工作量.还有就是颜色

信息等.不用每次记忆,重新构造,因为J2me中的颜色和j2se的不太一样.没有常量定义.

4.游戏产品经常需要保护版权,而当今的很多反编译工具可以轻而易举地把jar文件的内容反编译过来,因此可以对程序进行模糊化处理,使得无法反编译

或者反编译后无法理解.可以右键点击项目,在属性中选择Build|Obfuscating,选择模糊化级别.

5.讲解中我们都使用NetBeans作为开发平台,有关安装事宜请访问www.netbeans.org.

好,我们开始吧。

A. 首先,建立一个新的移动应用程序项目,取名Tetris, 不要自动创建Hello程序,选取MIDP1.0和CLDC1.0.

B. 新建一个包,方法是右键点击项目,选取New|Java Package,取名Tetris.

C. 新建一个Midlet,同上,选取New|Java Midlet, 取名TetrisMidlet.

D. 我们需要一个能够显示游戏的Canvas, 因此新建一个Class名叫TetrisCanvas, 在TetrisMidlet.java中将TetrisCanvas作为当前可以显示的元素:

现在的TetrisMidlet.java如下:

package Tetris; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * * @author lin * @version */ public class TetrisMidlet extends MIDlet { public void startApp() { Display display = Display.getDisplay( this ); // TetrisCanvas extends Canvas which extends Displayable so it can // be displayed directly display.setCurrent( new TetrisCanvas()); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }

由于TetrisCanvas继承了Canvas,所以可以被TetrisMidlet所显示.

如何使用J2ME中的线程(2)

时间:2011-02-10 林刚

E. 这里,我们需要将TetrisCanvas继承Canvas,并且实现Canvas的接口函数paint(),我们现在有了一个TetrisCanvas的框架了。

package Tetris; import javax.microedition.lcdui.*; public class TetrisCanvas extends Canvas { /** Creates a new instance of TetrisCanvas */ public TetrisCanvas() { } protected void paint(Graphics g){ } }

下面我们需要使得TetrisCanvas具有Thread的特性,这里有两种方法,一种是让TetrisCanvas继承Thread类,然后生成它的实例,但是由于它已经

继承了Canvas类,而Java中不允许多重继承,因此,我们在编程当中通常采取第二种做法,也就是让它实现Runnable接口,在成员中声明一个Thread

成员,实例生成指向自己,然后实现run方法。

也就是这样:

public class TetrisCanvas extends Canvas implements Runnable { private Thread Blocker = null; ... public TetrisCanvas(){ Blocker = new Thread(this); Blocker.start(); } ... public void run(){ whil

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号