3. Android绘制图形时,没有一般图形库中提供的Pen, Brush类,设置Pen和Brush,字体都是通过Paint类来设置的,对于初学者一开始会觉得有些困惑。
4. Rect 一般是通过left,top, bottom, right来定义,而Java ME平台是通过left, top, width, height,如果不注意,会造成意想不对结果:-),如android 平台中canavs.drawRect, 以及canvas.clipRect 是通过left,top, bottom, right来定义一个四边形,而Java ME是通过left,top及宽度,高度来定义,移植过程如果不注意就出错了。
5. Android在非UI 线程中更新Canvas里,需要调用postInvalidate, view.invalidate 相当于 Jave ME中 Canvas 的repaint.
如果想在非UI线程执行和UI相关的方法,一般是通过hander.post 来实现,而与这对应的 Java ME是display 的callSerially.
6. Android中提供一个SurfaceView类,允许在使用另一个thread来更新Canvas,这对于游戏的图形的刷新性能提高非常重要。
7. Android没有提供类似Java ME中的Game API,但是实现或是移植一个类似的Game API也不困难,Android坦克大战游戏中移植了Java ME Game API中Layer, LayerManager,TiledLayer,Sprite类,使得整个移植工作变得非常顺利。
总体感觉Android平台相对来说还是比较容易上手,对于会Java或是C#的程序员,即使以前没有从事过手机软件开发,也是比较容易入门的。而且Android平台和Java SE有相当一部分类是公用的,也是二进制兼容的,也就是说在Java SE平台上的类库(.jar)文件,可以直接用在Anroid平台,这里先给出一个移植后的截图。后面将详细说明这个游戏的设计,最后会给出所有源码,有兴趣的朋友可以扩展成联网游戏或是作为学习游戏设计的参考,坦克大战游戏是一个中等难度的游戏,对于有志从事手机游戏开发的朋友,可以自行写个坦克大战游戏后基本就能入门手机软件开发。