`
java2000.net
  • 浏览: 655876 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

DoJa平台手机游戏的开发与移植

阅读更多
作者:关文柏
时间:2006年6月13日
 
关键字:DoJa NTT DoCoMo i-mode i-appli
 
 
内容概况:
 
·DoJa技术简介
·DoJaAPI预览
·appli程序的开发
·DoJa游戏移植到J2ME平台的方法
·相关资源链接
 
 
一,DoJa技术简介
       简单的说,DoJa是日本最大的移动通讯公司NTT DoCoMo的专利技术。而i-mode是该公司对于移动通讯2.5G阶段的一种应用模式,这个技术覆盖很多方面。i-mode初始于1999年,而i-mode与JAVA结合诞生的i-appli服务初始于2001年,以JAVA为开发语言的i-mode被称为DoJa技术,DoJa技术实际上是基于CLDC规范之上的平台技术,与J2ME标准平台是平行。有独立的API类库。在J2ME标准平台上开发的移动通讯程序叫做MIDP程序,符合MIDP1.0或2.0规范。而在DoJa平台上开发的程序被叫做appli程序。DoJa现在已经有很多版本。最高版本DoJa4.0。
 
 
二,DoJaAPI预览
 
       我们以现在通用的DoJa2.5版本的API为例,大致看一下它有哪些特色。
2.5版本包括下面几个包:
包含了可以控制设备的类,比如camera类
包含一些在CLDC的GCF( Generic Connection Framework)框架之下的类
包含语言类
包含了用于网络通讯方面的类
包含了一些创建用户界面可选的类
包含了可创建3D图形的类,也是可选的
包含了一些可使用于本地终端功能的类,像操作手机电话本,收发Email等。
包含了一些用于创建用户界面的类
包含一些工具类
 
 
可以看出DoJaAPI比标准J2ME更加丰富。一般在开发和移植过程中,经常遇到的类库就是com.nttdocomo.ui包,所以我们大致看一下这里面都有哪些类。
 
       这个包中包含了appli程序的入口类, Iapplication类,appli程序的用户界面(GUI)也分高级界面和低级界面,只不过他们的继承关系有些混乱,比如Component类是定义用于高级界面的抽象类,它有九个子类。包含一些按钮,标签,文本框的一些类。实际上就是一些组件。不是容器类。而Frame类也是一个抽象,意思是可表示为一个框架或容器。
它的子类有CanvasDialogPanel。其中DialogPanel属于高级界面类,而Canvas则用于低级界面。用于显示界面的类叫Display,而它的显示屏幕的方法为setCurrent(Frame f),里面的参数为Frame类对象。说明像Component类型的子类是不能独立显示在界面上的,要通过Frame子类中的高级界面类来填加。也就是必须放在Panel上面,才能被显示出来。
其它的还有用于画图的Graphics,Graphics2D,Graphics3D类,负责加载媒体资源的MediaManager类等等。因为类很多,而且功能复杂和强大,就不一一介绍了,可以参考API文档进一步学习。
 
 
,appli程序开发
 
 
下面我们通过一个小程序来讲解如何开发一个appli的程序。工欲善其事必先利其器,我们要下载一个DoJa的专用模拟器才行。
好在DoJaAPI文档和模拟器以及使用方法在http://www.doja-developer.net都已经给全了。下载对应DoJa2.5版本的模拟器。名字叫javaappli Development Kit for DoJa-2.5版本为 1.03,然后安装上就可以了。
 
打开模拟器,会出现类似WTK的窗口,不同的是一个手机模拟器的窗口也会一起出现,而且还有个命令行模式的窗口。
 
仔细看一下,其实界面功能挺简洁的,菜单栏有文件,工程,编辑,设备,帮助几个选择,工具栏包括新建项目,打开项目,ADF配置,创建,运行这些选项。下面还有一些运行模式的选择。当然这些项目都是英文的。
 
什么是ADF配置呢,这里讲一下appli的安装程序也包括jar打包文件和一个描述文件,不同的是这个描述文件的类型为.jam.而ADF中的设置就是相当于WTK中的setting.也就是用于jam文件描述的项目。
 
好了,我们先新建立一个工程,点new project,会出现一个提示窗口,让你输入工程名称,上面还有一个参考工程的选择,这个不用管它。我们的工程名就叫Test_doja. 点create创建。
然后在这个窗口会显示一些我们创建的信息。比如我的模拟器安装路径是D盘根目录。那么会显示下面信息:
Placed java source files in D:\jDKDoJa2.5\apps\Test_doja\src
Placed resource files in D:\jDKDoJa2.5\apps\Test_doja\res
Placed Scratchpad file in D:\jDKDoJa2.5\apps\Test_doja\sp
说明在模拟器的apps目录下,就是我们创建的工程目录。里面还有三个文件夹,scr用来放.java文件,res用来放资源,sp用来存放Scratchpad文件。这个Scratchpad这里要详细讲一下。
 
appli模式简单说就是客户手机通过连接 I – mode服务器来获得其它的网络资源。这些资源可以来自不同的网站。手机用单独有一块类似硬盘的区域用来存储这些资源,叫做Scratchpad,一般的DoJa手机游戏都是先从网络上下载资源到Scratchpad里,然后再从Scratchpad中读取来用。而且Scrtchpad是可写的,可以保存游戏信息。
 
回到我们刚才的工程中,现在sp目录是空的,也就是没有Scratchpad文件。我们可以自己创建一个。默认名称是工程名后面加上数字0,Scratchpad文件的后缀名为.scr。
需要说明的是,res目录里也是放资源文件的。所不同的是res中放的资源文件,在打包时会一起打进Jar文件。而sp目录下的Scratchpad不会。
 
我们的程序很简单,所以就不用制作Scratchpad了。功能就是实现高级界面与低级界面的切换。下面是代码:
 
import com.nttdocomo.ui.IApplication;
import com.nttdocomo.ui.Canvas;
import com.nttdocomo.ui.Panel;
import com.nttdocomo.ui.Button;
import com.nttdocomo.ui.Label;
import com.nttdocomo.ui.ComponentListener;
import com.nttdocomo.ui.Display;
import com.nttdocomo.ui.Component;
import com.nttdocomo.ui.Graphics;
 
 
public class Test_doja extends IApplication implements ComponentListener
{
       Panel p = new Panel();
      
       public Test_doja()
       {
              Button ok = new Button("ok");
              Label label = new Label("The first DoJa program!");
              p.setBackground(0xc0c0c0);
              p.add(label);
              p.add(ok);
              p.setComponentListener(this);           
       }
       public void start()
       {
              Display.setCurrent(p);
       }
       public void componentAction(Component source, int type, int param)
       {
              if(type == ComponentListener.BUTTON_PRESSED)
              {
                     Display.setCurrent(new DoJaCanvas());
              }
       }
 
}
 
class DoJaCanvas extends Canvas
{
       public DoJaCanvas()
       {
       }
       public void paint(Graphics g)
       {
              g.setColor(0xff0000);
              g.fillRect(0,0,getWidth(),getHeight());
              g.setColor(0xffffff);
              g.drawString("Hello world!",30,50);
       }
}
 
 
 
代码很简单,所以我没加注释,有过J2SE和J2ME编程经验的人,应该很容易看懂。Iapplication类跟MIDlet性质相同。不过它只需要从写start()方法,作为程序启动入口。
我们现在把代码保存在scr文件夹中,然后点build,如果没错误,则会提示下面信息:
D:\jDKDoJa2.5\apps\Test_doja\bin\Test_doja.jar created
D:\jDKDoJa2.5\apps\Test_doja\bin\Test_doja.jam updated
Build completed
 
说明jar和jam文件直接创建完了。然后点run,就可以看效果了。是不是很轻松。: )
 
 
四, DoJa游戏移植到J2ME平台的方法
 
       这部分内容我在手机移植体会(二)中已经介绍过,这次我主要说一下资源文件的读取。其实DoJa的API比标准J2ME丰富许多,所以移植是有难度的。用标准的J2MEAPI类库不能完全实现DoJa类库所有功能。我主要说一下一般的移植方法。
前面讲过关于Scratchpad的概念。我们通常看到的工程文件,都包含很多内容。其中有gif资源文件,.scr文件,和代码。我觉得只有.scr文件和java代码和打包后的jam和jar文件就够用了。因为图片和声音文件通常也在.scr文件中包含。不过有些小游戏的一些图或声音也会直接打在jar包内。就是工程中res目录下的东西。。
 
关于.scr文件的读取与解析,DoJa都提供了详细的方法,比如:
 
DataInputStream in = Connector.openDataInputStream(
          "scratchpad:///0;pos=" + offset+ ",length=" + length)
 
实际表示 从 scratchpad 的第 0 扇区 偏移量为offset,长度为length的数据作为 输入流。
前面我们说了scratchpad像硬盘一样。所以scratchpad:///0 的0 也可以是1 或者别的数字。但是区域不同。0对应的Scratchpad文件名为"工程名"+0.scr,如果是1就是"工程"+1.scr.也就是说Scratchpad可以由多个文件组成表示不同的存储区域.如果是往scratchpad中写操作,就用DataOutputStream构建就可以了。比如保存游戏中的分数。
上面这是从scratchpad中得到资源文件在DoJa代码中的写法。如果要是从res目录中读取,如何写呢。像这样:
DataInputStream in  is = Connector.openInputStream("resource:///" + filename);
filename就表示资源文件的名字。
 
看了上面的表示方法,我想大家应该会用J2ME的方法来把他们从写了吧。DoJa读取资源的方法很灵活,比如gif图片,可以直接用文件名得到图片对象,也可以用byte数组构建,不过比较常用的,还是用输入流来构建。所以移植中要修改图片,首先要对.scr文件进行分析,解析,将图片整理出来,才能使用。提取图片的方法,可以参考我BLOG中的一个程序。
 
在IApplication类中有个很重要的方法 getArgs() ,这个方法会得到 jam描述文件中App param项目的参数,这些参数可以用空格分开,每一段就表示一个元素,因为用getArgs()得到的是一个String的数组。所以很多游戏都是靠jam中的App param参数进行初始化资源,或判断。
 
把资源文件找到后,就可以对游戏进行修改了,不过有些方法需要你自己从写,比如drawImage 有很多参数的方法,可以从大图中画小图, 还有 doja自己按键处理机制。不过这些如果仔细看API的话,是可以用J2ME从写的。 有些实现不了的功能,就可以注释掉了。
 
以上就是我对移植DoJa游戏的一点建议。有些在手机游戏移植体会(二)里面已经说过的我就没有再提。如果你在移植中遇到什么问题可以向我咨询,我会努力帮助你。
 
 
五,相关资源链接
http://www.doja-developer.net   可以下载模拟器,API文档,以及DoJa技术的介绍等
 
 
http://www.nttdocomo.com     NTT DoCMo 公司的官方网站,里面介绍一些最新的技术和I-mode 的介绍。
分享到:
评论

相关推荐

    Doja SDK 5.1 en

    值得注意的是,DoJa应用中运用的API与特定手机密切相关,各不相同,不能通用。 与传统的基于HTML的i-mode内容相比,DoJa使得i-mode能够提供更加富有动态和交互的内容。基于i-mode 的Java是由Sun Micorsystems专门为...

    JAVA手机游戏开发PPT课件.ppt

    Java因其跨平台性、面向对象特性和自动内存管理,成为手机游戏开发的首选。\n\n**游戏开发流程**\n游戏开发始于策划阶段,由游戏策划提出创新点和设计方案。接着,美工团队负责绘制游戏角色和场景,工程人员则将这些...

    JAVA手机游戏开发ppt课件.ppt

    JAVA手机游戏开发ppt课件 §1. 自我介绍和手机游戏开发概述 在手机游戏开发过程中,需要考虑策划、美工、程序、测试等多个要素。作为IT技术讲座,重点放在程序上。JAVA是手机游戏开发的主要语言之一。 §2. 手机...

    JAVA手机游戏开发PPT教案学习.pptx

    总的来说,Java手机游戏开发涉及到的技术点包括Java语言基础、JVM原理、跨平台特性、手机操作系统平台的理解以及J2ME框架的使用。学习Java手机游戏开发不仅需要掌握编程技术,还需要了解整个游戏开发的流程和各环节...

    手机游戏简单开发.docx

    【手机游戏开发】是互联网行业中一个充满活力的领域,它涉及到多方面的技术和创新思维。从一个简单的概念到最终的产品,手机游戏的制作过程相当复杂,包括了多个关键步骤。 首先,【设计文档】是游戏开发的起点,它...

    DoJa-1942:使用 iAppli SDK 1.5 从 J2ME 1942 移植到 DoJa(2005 年 5 月)

    总结 我将我的 J2ME 1942 克隆移植到 i-mode (DoJa) 平台 运行 JAR 的要求 Java 2 运行时环境 DoJa 1.5 模拟器版1.07 可以从 DoJa 开发者网络下载: 如何玩演示 可分发文件位于“dist”文件夹中 箭头(或 8/2、4/6...

    InputStreamReader_test.rar_doja_doja中文_简体 繁体

    在这个"InputStreamReader_test.rar_doja_doja中文_简体 繁体"的压缩包中,我们可以推测它包含了一个示例项目,用于演示如何在doja 2.5开发环境下进行中文简体到繁体的转换。doja可能是一个特定的Java库或者框架,...

    DoJa Trivia Quiz-开源

    【DoJa Trivia Quiz-开源】是一款专为支持DoJa 2.5平台的手机设计的琐事问答游戏。在了解这款开源项目之前,我们首先需要熟悉DoJa和开源软件的概念。 DoJa是由NTT DOCOMO开发的一种Java ME(Micro Edition)应用...

    Doja Cat New Tab Wallpapers New Tab Theme-crx插件

    在每个新的标签页上包括Yoru最喜欢的Regper Doja Cat的高清图像! 对于RAP和HIP-HOP的粉丝! 请评价我们! 如果您觉得我们不值得五星级评分,请发电子邮件或首先致电我们! 我们希望收到你的来信! support@...

    JammedUp-开源

    DoJa是NTT DoCoMo公司为i-mode手机开发的Java平台,与MIDP类似,但具有自己的API和特性。 **3. 自动化同步的重要性** 在开发过程中,开发者可能需要频繁更新MIDlet的代码或资源,这会导致JAR文件的改变。JammedUp ...

    java XML sax parser (2kb)-开源

    这是一个为所有 Java 设备制作的小型 SAX 解析器。 它可以从非常小的设备(从 Midp 到 DoJa 的典型 java 电话)到企业服务器使用。 现在,它仅支持 SAX 解析器模型。 使用非常简单(请参阅 .java 示例)。 提示是

Global site tag (gtag.js) - Google Analytics