花开有时

花开有时,花落有时,来有时,去有时。不撕扯,只关切;不纪念,只牵挂;不感动,只明白;不寻找,只记得。
随笔 - 24, 文章 - 0, 评论 - 54, 引用 - 0
数据加载中……

AbstractGame类分析

 

JME提供了一个包:com.jme.app,这个包里提供了一些开发一个JME应用程序的基本类,其中AbstractGame类是基本的基本,这个包中的其他类都是直接或间接继承这个类。

AbstractGame类的作用是提供一个JME游戏开发的基本变量、常量及方法的抽象类,定义了游戏的开始与结束。如果要开发一个JME游戏,那么就要继承或继承AbstractGame类的子类,这些类的作用是定义JME游戏的其他属性及动作,如背景、摄像头、光线、渲染效果等等。com.jme.app包提供了定义好的一些子类,开发一般的3D效果是足够了,如果要涉及到具体的细节就需要自己开发相应的子类,定义自己需要的细节。

AbstractGame类分析:

AbstractGame定义了一个实现游戏的最基本方法。客户端应用程序不应直接继承AbstractGame类。

1、 属性分析:

l         finished:标志游戏的运行。

l         JME_VERSION_TAGJME版本号

l         DEFAULT_IMAGE:开始图片的路径,就是游戏刚开始时出现的图片,类型是URL。默认的是JME的“大猴子头图片”的路径。

l         NEVER_SHOW_PROPS_DIALOG:重来不显示属性对话框。这样你将不能对你的应用程序的显示进行调整。

l         FIRSTRUN_OR_NOCONFIGFILE_SHOW_PROPS_DIALOG:只有在属性文件没找到或没加载时才显示属性对话框。

l         ALWAYS_SHOW_PROPS_DIALOG:在启动时一直显示属性对话框。

l         dialogBehaviour:对话框应该怎么显示,默认的是FIRSTRUN_OR_NOCONFIGFILE_SHOW_PROPS_DIALOG

l         dialogImage:图片应该怎样显示,默认是null

l         properties:类型PropertiesIO,通过加载属性文件定义应用程序的属性。

l         display:类型DisplaySystem,游戏着色效果的定义。

2、 方法分析:

l         getVersion():返回JME的版本号。

l         assertDisplayCreated():确定显示系统在使用前是否被成功创建,如果没有成功创建则扔出JmeException异常。

l         setDialogBehaviour(int behaviour):设置属性对话框应该怎样显示。

l         setDialogBehaviour(int behaviour, String image):设置属性对话框与开始图片的显示。

l         setDialogBehaviour(int behaviour, URL image):设置属性对话框与开始图片的显示。

l         getAttributes():此方法尝试第一次通过属性文件“properties.cfg”获得属性信息,然后属性对话框依靠这些信息显示属性信息。

l         start():开始游戏。游戏第一次通过调用initSystem()initGame()进行初始化。假如在初始化的过程中没有出现错误,程序将进入主循环。跳出主循环通过调用finish()cleanup()。子类应该最终声明此方法。

l         finish():跳出主循环。

l         quit():离开程序。

l         update(float interpolation):更新游戏状态。物理效果、人工智能、联网、核算得分以及之类等等应该在这个方法里完成的事情。多久及什么时候调用这个方法要看主循环的实现。变量interpolation对于0-1不可用。

l         render(float interpolation):向OpenGL上下文显示游戏信息。在着色期间不对游戏的应该怎样运行进行更改。多久及什么时候调用这个方法要看主循环的实现。变量interpolation对于0-1不可用。

l         initSystem():为客户程序创建所以必须的系统元素。它在start()方法调用后只调用且只调用一次。系统的显示必须在这个方法里进行初始化。

l         initGame():为启动的需要创建和初始化所有的游戏数据。建议如果在这个方法里频繁调用资源时通过高速缓存的技术。这个方法在initSystem()调用完成后调用且只调用一次。

l         reinit():重新就建立子系统。这个方法可以被客户程序在任何时候调用。

l         cleanup():在离开程序前清除所有已创建的对象。这个方法在finish()调用完成后调用且只调用一次。

posted on 2007-09-24 11:25 花开有时 阅读(784) 评论(7)  编辑  收藏 所属分类: JMonkeyEngine

评论

# re: AbstractGame类分析  回复  更多评论   

JME是不是JAVA ME?
2007-09-24 16:05 | 千里冰封

# re: AbstractGame类分析  回复  更多评论   

不是,全称是JMonkeyEngine
2007-09-24 16:52 | 花开有时

# re: AbstractGame类分析  回复  更多评论   

呵呵,真得好好研究一下了,这么强的东西
2007-09-27 19:27 | 千里冰封

# re: AbstractGame类分析  回复  更多评论   

欢迎共同研究:-)
2007-10-08 20:01 | 花开有时

# re: AbstractGame类分析  回复  更多评论   

能发表多一点关于JME的入门文章吗?
英文太差,看不了管网的信息,
技术水平又差,不能读源码.
谢谢
2007-10-25 00:36 | eivenchan

# re: AbstractGame类分析  回复  更多评论   

@eivenchan
好久没来博客了。
最近要找工作,没有什么时间写博客了。
等事情结束了再说吧。
对于JME,原本是拿来做项目的,但是因为工作这件事,项目也不做了,JME好像也失去了使用的目标,纯粹是为了学习而学习了:-)。
以后我会把JME官网的一些文章给翻译过来(可能时间会有些拖延),这也是为了不把学过的东西忘掉--即使不做项目。

但是我要说,JME无非就是操纵javaAPI,如果要学习JME,java一定要好,至少要很熟练,源代码应该要看懂吧。如果你连源代码都看不懂,即便照着一些“入门”的文章做成功了,那也只是“入门”而已,或许连“入门”都算不上。
还有一点就是,JME是3D游戏引擎,不管做不做游戏,既然是3D东西,那么3D方面的知识也应该了解一些,比如渲染、地形、三维空间、摄像头等等之类。我原先对3D不了解,结果看源代码看得特费劲。

不管怎么说,学习一定要把基础打好。

PS:我对JME也不怎么了解啦,只是学习了一段时间,写博客纯粹是为了有关个地方能记录我的学习过程,仅此而已。如有不对的地方,欢迎高手指正。
2007-10-26 09:38 | 花开有时

# re: AbstractGame类分析[未登录]  回复  更多评论   

最近也准备在用jme来做一个项目,发现这方面的资料真的不多啊~~
2008-04-29 12:58 | spring

只有注册用户登录后才能发表评论。


网站导航: