在此,我们将会学习如何建立一个JME的基础程序,并探索SimopleGame,Box和rootNode这几个关 键字,好的,让我来深入的学习一下吧.这里是我们为你展示的基础程序源代码:
这代码既简单又漂亮不是么?真正有价值的内容其实是从下边这行代码开始的:
public class HelloWorld extends SimpleGame{
SimpleGame在后台做了很多初始化的事件。如果你真的想了解它做了什么,那么你最好去看源码,但是在这里,你只需要知道它为程序所有基础的需求提供一个反馈就好了。你要做的就是在你所有的程序开始前继承(extends)它就好了。
下边让我们来看看这句代码:
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
不知道你注意到那只每次在程序运行前都出现的猴子的照片了吗?就是那个配置你程序运行环境的窗口。
好吧,就是上边那行代码控制这个窗口是否显示。就像它名字说的那样,每次你的程序运行的时候这个窗口将会启动。如果你把这句代码改成下边这个样子,这个对话窗口将不再出现了:
app.setConfigShowMode(ConfigShowMode.NerverShow);
不是很难吧?
看下边这行代码:
app.start();
方法start()是启动这个循环调用的基础方法。首先,这个方法会初始化JME程序,并在每次循环调用时反复做两件事:首先,它告诉程序它是需要移动的,其次,返回一切。基本上,是这个方法使程序运行。
simpleInitGame()是SimpleGame的抽象方法。所以,如果你继承了SimpleGame的话,你就必须实现simpleInitGame()这个方法。让我们看看代码,很明显,发生了两件事。首先,我做了个盒子(Box,也就是程序启动时你看到的盒子。)其次,我在我的场景的根节点中加入了这个盒子(Box)。rootNode是SimpleGame产生的一个根节点的类,rootNode或者它的子类可以添加所有的对象。需要注意的是,我给对象b赋了三个属性:一个String对象和两个Vector3f对象,每个Node对象、Box对象、Circle对象、Person对象以至于任何对象在场景中都需要一个名称。通常,人们都希望每个对象的名字是很明确的。我叫这个对象为“My Box”,但是你也可以给它起个“阿猫阿狗”之类的名字。随后的两个属性指出了Box的两个顶点,他们分别是Box的最大和最小向量顶点,通过这两个顶点的值我们可以知道,这个Box对象是中点为(0.5,0.5,0.5)的,边长为1的正方体。
[size=small][/size][align=center][/align]
懒得上传图片了,感兴趣的直接下载附件,word2007打开哦~本人不是专业的翻译人才,所以文档翻译的可能有些蹩脚,有看不懂的直接联系我就可以,HELLO系列我已经翻译到了第十章,以后的文档会陆续发出,希望大家多多支持!
package hello;
import com.jme.app.SimpleGame;
import com.jme.app.AbstractGame.ConfigShowMode;
import com.jme.image.Texture;
import com.jme.math.Vector3f;
import com.jme.scene.Text;
import com.jme.scene.shape.Box;
import com.jme.scene.state.TextureState;
import com.jme.util.TextureManager;
import com.jmex.font2d.Text2D;
import com.jmex.font3d.JmeText;
public class HelloWorld extends SimpleGame{
public static void main(String[] args) {
HelloWorld app=new HelloWorld();
app.setConfigShowMode(ConfigShowMode.NeverShow);
app.start();
}
protected void simpleInitGame() {
//制作一个盒子
Box b=new Box("Mybox",new Vector3f(0,0,0),new Vector3f(5,5,5));
rootNode.attachChild(b);
System.out.println("中点:"+b.getCenter());
}
}
这代码既简单又漂亮不是么?真正有价值的内容其实是从下边这行代码开始的:
public class HelloWorld extends SimpleGame{
SimpleGame在后台做了很多初始化的事件。如果你真的想了解它做了什么,那么你最好去看源码,但是在这里,你只需要知道它为程序所有基础的需求提供一个反馈就好了。你要做的就是在你所有的程序开始前继承(extends)它就好了。
下边让我们来看看这句代码:
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
不知道你注意到那只每次在程序运行前都出现的猴子的照片了吗?就是那个配置你程序运行环境的窗口。
好吧,就是上边那行代码控制这个窗口是否显示。就像它名字说的那样,每次你的程序运行的时候这个窗口将会启动。如果你把这句代码改成下边这个样子,这个对话窗口将不再出现了:
app.setConfigShowMode(ConfigShowMode.NerverShow);
不是很难吧?
看下边这行代码:
app.start();
方法start()是启动这个循环调用的基础方法。首先,这个方法会初始化JME程序,并在每次循环调用时反复做两件事:首先,它告诉程序它是需要移动的,其次,返回一切。基本上,是这个方法使程序运行。
simpleInitGame()是SimpleGame的抽象方法。所以,如果你继承了SimpleGame的话,你就必须实现simpleInitGame()这个方法。让我们看看代码,很明显,发生了两件事。首先,我做了个盒子(Box,也就是程序启动时你看到的盒子。)其次,我在我的场景的根节点中加入了这个盒子(Box)。rootNode是SimpleGame产生的一个根节点的类,rootNode或者它的子类可以添加所有的对象。需要注意的是,我给对象b赋了三个属性:一个String对象和两个Vector3f对象,每个Node对象、Box对象、Circle对象、Person对象以至于任何对象在场景中都需要一个名称。通常,人们都希望每个对象的名字是很明确的。我叫这个对象为“My Box”,但是你也可以给它起个“阿猫阿狗”之类的名字。随后的两个属性指出了Box的两个顶点,他们分别是Box的最大和最小向量顶点,通过这两个顶点的值我们可以知道,这个Box对象是中点为(0.5,0.5,0.5)的,边长为1的正方体。
[size=small][/size][align=center][/align]
懒得上传图片了,感兴趣的直接下载附件,word2007打开哦~本人不是专业的翻译人才,所以文档翻译的可能有些蹩脚,有看不懂的直接联系我就可以,HELLO系列我已经翻译到了第十章,以后的文档会陆续发出,希望大家多多支持!