快速业务通道

创建Eclipse游戏插件,第2部分: 构建和发射BB枪 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
ipse.swt.widgets.Composite; import org.eclipse.opengl.GL; import org.eclipse.opengl.GLU; import java.util.Timer; import java.util.TimerTask; public class GameScene extends GLScene { 

请注意导入了 ShootoutView 类,要用它得到任务视图中任务的数量。然后再导入三个类:

CompiledShape 编译的形状是每个形状类都要扩展的类。它有一些方便的方法,有助于把 OpenGL 的细节抽象掉。GLScene 这个类是新的 GameScene 类要扩展的类。它也有助于抽象掉 OpenGL 的一些低级细节,这超出了本教程的范围。但是,可以放心地使用它们。SceneGrip 这是一个很酷的类,它处理来自 OpenGL 画布的事件。这些事件包括鼠标和键盘事件。在本教程后面,将用键盘发射 BB 弹,并击碎虫子。

接下来,要定义 GameScene 的类变量。

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(4)

时间:2011-02-10 IBM Tyler Anderson

类变量

有几个形状需要创建,现在就声明它们。可以为它们创建空的静态类,这样 Eclipse 集成开发环境(IDE)就不会用可怕的红色花体字高亮显示所有代码。继续定义 GameScene 类,如清单 3 所示。

清单 3. 定义类变量

public class GameScene extends GLScene {    private static final float[][] COLOR = {      {1.0f, 1.0f, 0.0f, 0.7f},      {0.0f, 1.0f, 0.0f, 0.7f},      {0.0f, 0.0f, 1.0f, 0.7f},      {1.0f, 0.0f, 1.0f, 0.7f},    };    private SceneGrip grip;    private Gun gun;    private Bug[] bugs;    private int bugCount;    private Bullet bullets[];    private Pow pow;

还定义了一个 color 数组。在 OpenGL 中,颜色被定义为有 4 个元素的浮点数组。第一个元素定义红色,第二个是绿色,第三个是蓝色。要记住这个顺序,只要想 “RGB” 即可。作为空类的示例,下面就是空的 Gun 类的样子:

Class Gun extends CompiledShape{ }

现在转到 GameScene 类。

构造函数

需要初始化这个类。SceneGrip 类也要得到初始化,它负责当前视图和旋转信息。当在 OpenGL 画布上看到第一个对象的时候,这就清楚了。现在定义 GameScene 类的构造函数,如清单 4 所示。

清单 4. GameScene 类的构造函数

public GameScene(Composite parent) {      super(parent);      this.grip = new SceneGrip(this);      this.grip.setOffsets(-3.25f, 3.25f, -30.5f);      this.grip.setRotation(45.0f, -30.0f);      this.getCanvas().addMouseListener(this.grip);      this.getCanvas().addMouseMoveListener(this.grip);      this.getCanvas().addListener(SWT.MouseWheel, this.grip);      this.getCanvas().addKeyListener(this.grip);    }

构造函数设置 SceneGrip,并把所有的侦听器添加到 OpenGL 画布,用 SceneGrip 作为侦听类。

接下来是初始化 OpenGL 上下文。

初始化 OpenGL 参数

OpenGL 有许多可以配置的参数。我们在 initGL 方法中定义了一些参数,如清单 5 所示。

清单 5. 初始化 OpenGL 上下文

protected void initGL() {      super.initGL();      GL.glLightfv(GL.GL_LIGHT1,             GL.GL_DIFFUSE,             new float[] {1.0f, 1.0f, 1.0f, 1.0f});      GL.glLightfv(GL.GL_LIGHT1,             GL.GL_AMBIENT,             new float[] {0.5f, 0.5f, 0.5f, 1.0f});      GL.glLightfv(GL.GL_LIGHT1,             GL.GL_POS

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号