没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-04-29 11:32:58.000|阅读 550 次
概述:MIDP 2.0 API 是用于开发安全的,内容丰富的多媒体应用程序,包括移动设备游戏的一套功能加载的APIs。 MIDP 2.0是建立在它的前身MIDP 1.0基础上的,为创建有效率的快速的移动应用程序提供了更好的开发平台。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
MIDP2.0在游戏开发中的作用
MIDP 2.0 API 是用于开发安全的,内容丰富的多媒体应用程序,包括移动设备游戏的一套功能加载的APIs。 MIDP 2.0是建立在它的前身MIDP 1.0基础上的,为创建有效率的快速的移动应用程序提供了更好的开发平台。关于MIDP2.0更多的信息,参见本文最后的Resources。
MIDP2.0进一步完善了MIDP1.0的功能和特征。关于新的特征,参见What's New in MIDP 2.0.。对MIDP最重要的补充是Game API,或是更准确的说是javax.microedition.lcdui.game API包。通过Game API, MIDP2.0为游戏开发者提供了从MIDP1.0从无到有的开发的基石。这些基石被创建和控制各种游戏要素如游戏画布,精神和层次等等分了类。因此,MIDP2.0大大降低了游戏开发的时间。
另外两个游戏开发必不可少的MIDP 2.0 API包,本文也有探究,它们是javax.microedition.midlet 和 javax.microedition.lcdui.。
javax.microedition.midlet API包提供了所有移动应用程序的开发基础。它包括javax.microedition.midlet.MIDlet class, 是所有基于J2ME移动应用程序类(也被称作midlets)中的基础类并且通过所有移动应用程序的类来进行扩展。非常类似java.applet.Applet class,MIDlet class提供必要的资源去创建midlets.
javax.microedition.lcdui API包对于开发一个所有移动应用程类型的用户界面是十分必要的。这个API提供了很多类去创建并控制UI模块(如屏幕,表格,文本框,收音机按钮等等)并且为移动应用程序包括游戏处理输入。有AWT和SWING 的GUI开发经验的开发者们将会发现javax.microedition.lcdui包的要素类似于APIs的要素。
我将要探讨有关游戏开发的这些APIs的要素,当在实例游戏开发的时候遇到他们。
创建实例游戏
为了更好的了解APIs 和他们各自的类别,你将要开始开发一个简单的手机游戏。这将是一个单人的脱机游戏,一辆汽车穿过障碍。玩家使用手机上左右键来“驾驶”正在运行的汽车,用左键或右键来控制汽车避免撞到障碍物。当撞到障碍物时游戏结束并显示分数。我叫它HardDrive.
注意:这个实例游戏开发在Windows 2000平台上使用J2ME Wireless Toolkit 2.1_01和J2SE 1.4.2_07 SDK。其他兼容各种平台的Wireless Toolkit和J2SE SDK版本也可以。
把源代码放在一起来开始创建游戏程序,叫它HardDrive。从上一节所探讨的,首先你需要开发的是HardDriveMIDlet (HardDriveMIDlet.java)扩展javax.microedition.midlet.MIDlet class。
HardDriveMIDlet.java (Download)
Listing 1.1: 来自HardDriveMIDlet.java的代码段
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class HardDriveMIDlet extends MIDlet implements CommandListener {
... ... ... ... ... ... ... ...
HardDriveMIDlet也执行javax.microedition.lcdui.CommandListener Interface来接收应用程序执行和处理它们时所产生的命令事件。该命令事件在像EXIT, CANCEL, BACK, OK, STOP这些命令和使用soft buttons(在手机屏幕附近的特殊按钮,像箭头的键)所提出的命令时发生的并且被HardDriveMIDlet 的commandAction( )方法所处理。为了更有效率,命令应该被加进canvas中。
HardDriveMIDlet 像一个容器服务于所有canvases,它是表现出一个平面供在手机屏幕上画画。这里midlet包括HardDriveCanvas, 可以扩展javax.microedition.lcdui.game.GameCanvas class。GameCanvas 是一个特殊的canvas意味着为游戏程序制定高效率的动画。
另外一个canvas是HardDriveMIDlet包括的GameOverCanvas,扩展javax.microedition.lcdui.Canvas class。Canvas是一个简单的画布来画文本,行和简单的图形。当需要在屏幕上画画时canvas就被延展了,代替复杂的图形。例如,要显示启动画面,游戏结束画面和游戏指南。一个游戏程序的midlet可能包括很多canvas,但是只有一个canvas通过使用javax.microedition.lcdui.Display class的setCurrent()方法被随时显示。
HardDriveMIDlet还包括了三个重要的方法,也叫做lifecycle methods。它们是startApp(), pauseApp()和destroyApp( ), 对应的是midlet的Active, Paused和Destroyed状态。在HardDriveMIDlet的startApp( )方法中,HardDriveCanvas是实例并且通过使用HardDriveCanvas.的addCommand( ) 方法把EXIT命令添加到它的里面。
HardDriveCanvas.java (Download)
HardDriveCanvas实现了一个java.lang.Runnable接口使它本身运行在自己的线程上,这是独立执行game loop所必要的。Game loop 不段的被执行去运行游戏直到停止游戏的条件实现(在这个例子中,当汽车撞到障碍时或是玩家用Exit键随处推出游戏时)。
Listing 1.2: Game loop of HardDriveCanvas.java
public void start()
{
gameRunning = true;
Thread gameThread = new Thread(this);
gameThread.start();
}
... ... ... ...
... ... ... ...
public void run()
{
Graphics g = getGraphics();
//... ... ...some code
while (gameRunning) //The game loop
{
tick();
input();
render(g);
//... ... ...some code
try
{
Thread.sleep(timeStep );
//... ... ... ...some code
}
catch (InterruptedException ie) { stop(); }
}
Listing 1.2展示了HardDriveCanvas.java.的game loop。这是典型的game loop由访问下列顺序的方法tick( ), input( ), and render( )所组成。The tick( )方法是检查条件是否有必要去停止游戏并且改变游戏状态如果可以的话。方法input( )是处理game key(分配给游戏的键)输入和执行每一个按键必要的动作,例如游戏里的元素移动。通过render( )方法来处理游戏的呈现。
HardDriveCanvas也使用一个javax.microedition.lcdui.game.LayerManager例子添加或是管理HardDriveCanvas的多层次,每一层代表了一个sprite,sprite是一个游戏中基本的视觉要素,是在game canvas上移动的一个角色并且与其他sprite相互作用(这里,汽车或是物体都是sprite,可以相互碰撞)。每一个sprite形成一个虚拟层,可能是完全或是部分透明的,置于game canvas中。这些层一个一个的罗列。Sprite是javax.microedition.lcdui.game.Sprite class的目标,可以提供显示,转移和为sprite旋转碰撞的方向的功能。 tick( )方法是使用sprite class的collidesWith( )方法来检查碰撞。
HardDriveCanvas实例化一个ObstacleManager class目标来呈现和移动在game canvas上的障碍物并且检查它们是否与汽车发生碰撞。
ObstacleManager.java (Download)
ObstacleManager创建和管理在汽车跑到上随机出现的障碍物。为了简化和方便,ObstacleManager.java有汽车跑到上一次出现的障碍物的最大数量的硬编码值。该值只要你想就可以随时修改。
Listing 1.3: ObstacleManager.java的代码段
private static final int MAX_OBS = 10;
//... ...some code
为了在随机位置创建并显示障碍物,ObstacleManager采用了一个简单的策略。它创建了首批10个障碍物sprite并且使用LayerManager来添加这些sprite到game canvas中。然后,使用随机产生的x和y值建立他们的位置,移动它们到game canvas底部。只要这些障碍物中的每一个在没有碰撞到汽车的情况下到达canvas底部,它的位置就会通过同样的技术来重新建立同时游戏分数增加一分。这样,ObstacleManager重新使用相同的障碍物sprite并且随机显示他们。
GameOverCanvas.java (Download)
GameOverCanvas是一个简单的画布可以从HardDriveMIDlet接收游戏时间和游戏分数信息并且显示它。
(未完,待续。。。)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:IT专家网面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号